当前位置:   article > 正文

rust - 使用 cargo-nextest 替代 cargo test

rust - 使用 cargo-nextest 替代 cargo test

cargo-nextest新一代的rust测试程序,能够极大提升测试性能,可以完全替代 cargo test 命令。

1. 安装

cargo install cargo-nextest
  • 1

2. 执行测试

project
├── Cargo.toml
├── LICENSE
├── README.md
├── build.rs
├── core_utils
│   ├── Cargo.toml
│   ├── build.rs
│   ├── deny.toml
│   ├── src
│   │   ├── random
│   │   │   ├── arbitrary
│   │   │   │   ├── arbitrary.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── option.rs
│   │   │   │   └── result.rs
│   │   │   ├── gen.rs
│   │   │   ├── mod.rs
│   │   │   └── utils.rs
│   │   │   └── lib.rs
│   ├── tests
│   │   ├── test_random.rs
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

tests/test_random.rs 包含两个测试函数

  • test_random_string
  • test_random_string_2

src/random/option.rs 包含测试

#[cfg(test)]
mod tests {
    use crate::random::arby;

    #[test]
    fn test_option() {
        let x = arby::<Option<bool>>(5);
        println!("{:#?}", x);
        let x = arby::<Option<bool>>(5);
        println!("{:#?}", x);
        let x = arby::<Option<bool>>(5);
        println!("{:#?}", x);
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

2.1 查找所有测试

cargo nextest list
cargo nextest list test_random
  • 1
  • 2

2.2 找出慢测试、泄露测试,并设置超时时间,超时就自动终止

cargo nextest run --slow-timeout 60 -leak-timeout 1024
  • 1

2.3 并发测试

cargo nextest run --release -- --jobs 4
cargo nextest --jobs 4
  • 1
  • 2

2.4 重试失败的测试用例

cargo nextest run --retries 3
  • 1

2.5 运行上次失败的测试

cargo nextest run -- --failed
  • 1

2.6 测试指定的包

cargo nextest run -p core_utils
  • 1

2.7 测试 lib 中的所有测试用例

cd core_utils
cargo nextest run :cargo nextest run --lib
  • 1
  • 2
  • 3
  • 4

2.8 运行项目中的所有测试

cargo nextest run
# 会包含文档字符串中的测试用例
cargo nextest run --tests
  • 1
  • 2
  • 3

2.9 测试 tests 文件夹中的指定函数(模糊匹配)

cd core_utils
cargo nextest run test_random_string
cargo nextest run -- test_random_string
cargo nextest run -E 'test(test_random_string_2)'
cargo nextest run -E 'test(test_random)'
  • 1
  • 2
  • 3
  • 4
  • 5

2.10 测试 tests 文件夹中的指定函数(精确匹配)

cd core_utils
cargo nextest run -E 'test(=test_random_string)'
  • 1
  • 2

2.11 测试库中的指定函数

cargo nextest run --lib random::arbitrary::option::tests::test_option
cargo nextest run random::arbitrary::option::tests::test_option
cargo nextest run random::arbitrary::option::tests
cargo nextest run random::arbitrary::option::
cargo nextest run random::arbitrary:
cargo nextest run random::
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2.12 测试 tests 的一个文件

cargo nextest run --test test_random
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/657748
推荐阅读
相关标签
  

闽ICP备14008679号