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

How to disable a unit test in rust with an attribute?

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

#[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);
    }
}

进行第二次测试并打印出来时 (cargo test -- --nocapture), 我不想看到第一个测试的输出。

是否有禁用注释单元测试的选项?

或者是否可以选择 运行 第二个单元测试?

谢谢。

如果您从不需要的测试中删除 #[test] 属性,那么 cargo test 将忽略它。

另一种选择是添加 #[ignore] 属性。

#[ignore]
#[test]
fn test_1() {
    let a = 1;
    let b = 2;
    println!("{},{}", a, b);
    assert_ne!(a, b);
}

这会在测试结果中添加一个漂亮的颜色忽略。

test tests::test_1 ... ignored
test tests::test_2 ... ok

test result: ok. 1 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.03s