一个模块包含多个测试,如下所示:
#[cfg(test)]
mod tests_cases {
/*
#[test]
fn test_1() {
let a = 1;
let b = 2;
println!("{},{}", a, b);
assert_ne!(a, b);
}
*/
#[test]
fn test_2() {
let c = 1;
let d = 1;
println!("currently working on this: {},{}", c, d);
assert_eq!(c, d);
}
}
Run Code Online (Sandbox Code Playgroud)
当使用输出可见 ( cargo test -- --nocapture) 进行第二个测试时,我不想看到第一个测试的输出。
是否有一个选项可以禁用注释的单元测试?或者是否可以选择只运行第二个单元测试?
跟进 Q/A:如何在 Rust 中运行特定的单元测试?
\n在将库与二进制文件混合的项目中使用所描述的解决方案时cargo test path::to::some_test -- --exact,如何抑制输出中的所有“0 通过”噪声?
为了演示这个问题:我通过创建了一个最小的测试项目cargo new test-project --lib。然后我创建了以下文件:
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bin\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bar.rs\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 baz.rs\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 foo.rs\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lib.rs\nRun Code Online (Sandbox Code Playgroud)\n其中lib.rs包含:
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bin\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bar.rs\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 baz.rs\n \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 foo.rs\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lib.rs\nRun Code Online (Sandbox Code Playgroud)\n所有三个二进制文件都只是fn main() {}虚拟的。
运行时,cargo test tests::test_foo -- --exact我可以看到将单元测试过滤到特定的test_foo工作,但输出中充斥着二进制文件中的“运行 0 测试”:
Finished test …Run Code Online (Sandbox Code Playgroud)