【问题标题】:How can I run only integration tests我怎样才能只运行集成测试
【发布时间】:2021-06-01 18:05:30
【问题描述】:

有没有办法只运行集成测试而不运行单元测试?

我试过了:

cargo test --tests:运行单元+集成测试

cargo test --test test_name: 运行一个指定的测试

目前不能只运行集成测试还是我遗漏了什么?

【问题讨论】:

  • 我认为这是不可能的。您可以采用命名策略,使用特定模式命名所有集成测试,然后使用cargo test pattern

标签: rust


【解决方案1】:

您只能通过以下方式运行集成测试:

cargo test --test '*'

请注意,只有'*' 有效; *"*" 都不起作用。

参考:https://github.com/rust-lang/cargo/issues/8396

【讨论】:

  • 这应该是公认的答案
  • 在我对货物手表的测试中,我发现cargo test --test * 可以工作。
【解决方案2】:

问题是,Cargo 并没有真正区分集成测试和单元测试,因为两者在管理和实现它们方面并没有真正的区别;区别纯粹是语义上的。并非所有代码库都具有这种分离性。为简单起见,本书和参考文献称它们为单元测试和集成测试,但从技术上讲并没有这种区别。

Cargo 没有将测试分成两个逻辑类别,而是具有灵活的过滤系统,它允许您仅在测试名称与特定模式匹配时运行测试。 book 有一个专门介绍这个系统的部分。如果您想过滤掉某些测试,因为它们需要很长时间才能运行或不希望与所有其他测试一起运行,请使用 #[ignore] 注释测试。否则,请为测试使用某种命名方法,以便您可以按名称过滤掉它们。

Cargo reference page 还提到您可以使用Cargo.toml 清单中的目标选项来控制使用--tests 时运行的内容。

【讨论】:

    猜你喜欢
    • 2012-08-23
    • 2020-03-28
    • 2014-09-24
    • 1970-01-01
    • 2020-09-01
    • 2023-03-27
    • 2022-11-28
    • 1970-01-01
    • 2021-05-27
    相关资源
    最近更新 更多