rust 如何只运行集成测试

bpsygsoo  于 2023-08-05  发布在  其他
关注(0)|答案(3)|浏览(112)

有没有一种方法可以只运行集成测试,而不运行单元测试?
我试过了
cargo test --tests:运行单元+集成测试
cargo test --test test_name:运行一个指定的测试
目前是不是不能只运行集成测试,还是我遗漏了什么?

1hdlvixo

1hdlvixo1#

您可以通过以下方式仅运行集成测试:

cargo test --test '*'

字符串
请注意,只有'*'才能工作; *"*"都不工作。
参考:https://github.com/rust-lang/cargo/issues/8396

j5fpnvbx

j5fpnvbx2#

问题是,Cargo并没有真正区分集成测试和单元测试,因为就如何管理和实现它们而言,这两者之间并没有真正的区别;区别纯粹是语义上的。并不是所有的代码库都有这样的分隔。为了简单和避免混淆,本书和参考文献称它们为单元测试和集成测试,但在技术上没有这种区别。
Cargo没有将测试分为两个逻辑类别,而是有一个灵活的过滤系统,它允许您仅在测试名称与特定模式匹配时才运行测试。book有一个专门用于此系统的部分。如果您想过滤掉某些测试,因为它们需要很长时间才能运行,或者不希望与所有其他测试一起运行,请使用#[ignore]注解测试。否则,请为测试使用特定的命名方法,以便可以按名称筛选它们。
Cargo reference page还提到了这样一个事实,即您可以使用Cargo.toml清单中的目标选项来控制在使用--tests时运行的内容。

odopli94

odopli943#

我想补充回答。如果您只需要运行一种集成测试方法(例如'integration_test_method'),您可以通过以下命令执行此操作:

cargo test --test integration_tests 'intergration_test_method' 

cargo test --test integration_tests 'intergration_test_method' -- --nocapture

字符串

相关问题