相关疑难解决方法(0)

如何使用属性禁用 Rust 中的单元测试?

一个模块包含多个测试,如下所示:

#[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) 进行第二个测试时,我不想看到第一个测试的输出。

是否有一个选项可以禁用注释的单元测试?或者是否可以选择只运行第二个单元测试?

unit-testing rust

34
推荐指数
2
解决办法
1万
查看次数

运行特定测试时如何抑制货物测试的空输出?

跟进 Q/A:如何在 Rust 中运行特定的单元测试?

\n

在将库与二进制文件混合的项目中使用所描述的解决方案时cargo test path::to::some_test -- --exact,如何抑制输出中的所有“0 通过”噪声?

\n

为了演示这个问题:我通过创建了一个最小的测试项目cargo new test-project --lib。然后我创建了以下文件:

\n
.\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\n
Run Code Online (Sandbox Code Playgroud)\n

其中lib.rs包含:

\n
.\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\n
Run Code Online (Sandbox Code Playgroud)\n

所有三个二进制文件都只是fn main() {}虚拟的。

\n

运行时,cargo test tests::test_foo -- --exact我可以看到将单元测试过滤到特定的test_foo工作,但输出中充斥着二进制文件中的“运行 0 测试”:

\n
    Finished test …
Run Code Online (Sandbox Code Playgroud)

unit-testing rust rust-cargo

9
推荐指数
1
解决办法
386
查看次数

标签 统计

rust ×2

unit-testing ×2

rust-cargo ×1