有没有一种方法可以只运行集成测试,而不运行单元测试?我试过了cargo test --tests:运行单元+集成测试cargo test --test test_name:运行一个指定的测试目前是不是不能只运行集成测试,还是我遗漏了什么?
cargo test --tests
cargo test --test test_name
1hdlvixo1#
您可以通过以下方式仅运行集成测试:
cargo test --test '*'
字符串请注意,只有'*'才能工作; *和"*"都不工作。参考:https://github.com/rust-lang/cargo/issues/8396
'*'
*
"*"
j5fpnvbx2#
问题是,Cargo并没有真正区分集成测试和单元测试,因为就如何管理和实现它们而言,这两者之间并没有真正的区别;区别纯粹是语义上的。并不是所有的代码库都有这样的分隔。为了简单和避免混淆,本书和参考文献称它们为单元测试和集成测试,但在技术上没有这种区别。Cargo没有将测试分为两个逻辑类别,而是有一个灵活的过滤系统,它允许您仅在测试名称与特定模式匹配时才运行测试。book有一个专门用于此系统的部分。如果您想过滤掉某些测试,因为它们需要很长时间才能运行,或者不希望与所有其他测试一起运行,请使用#[ignore]注解测试。否则,请为测试使用特定的命名方法,以便可以按名称筛选它们。Cargo reference page还提到了这样一个事实,即您可以使用Cargo.toml清单中的目标选项来控制在使用--tests时运行的内容。
#[ignore]
Cargo.toml
--tests
odopli943#
我想补充回答。如果您只需要运行一种集成测试方法(例如'integration_test_method'),您可以通过以下命令执行此操作:
cargo test --test integration_tests 'intergration_test_method' cargo test --test integration_tests 'intergration_test_method' -- --nocapture
字符串
3条答案
按热度按时间1hdlvixo1#
您可以通过以下方式仅运行集成测试:
字符串
请注意,只有
'*'
才能工作;*
和"*"
都不工作。参考:https://github.com/rust-lang/cargo/issues/8396
j5fpnvbx2#
问题是,Cargo并没有真正区分集成测试和单元测试,因为就如何管理和实现它们而言,这两者之间并没有真正的区别;区别纯粹是语义上的。并不是所有的代码库都有这样的分隔。为了简单和避免混淆,本书和参考文献称它们为单元测试和集成测试,但在技术上没有这种区别。
Cargo没有将测试分为两个逻辑类别,而是有一个灵活的过滤系统,它允许您仅在测试名称与特定模式匹配时才运行测试。book有一个专门用于此系统的部分。如果您想过滤掉某些测试,因为它们需要很长时间才能运行,或者不希望与所有其他测试一起运行,请使用
#[ignore]
注解测试。否则,请为测试使用特定的命名方法,以便可以按名称筛选它们。Cargo reference page还提到了这样一个事实,即您可以使用
Cargo.toml
清单中的目标选项来控制在使用--tests
时运行的内容。odopli943#
我想补充回答。如果您只需要运行一种集成测试方法(例如'integration_test_method'),您可以通过以下命令执行此操作:
字符串