并行或连续的运行测试

可以设置测试线程的数量

  1. $ cargo test -- --test-threads=1

显示函数输出

默认情况下,当测试通过时,Rust 的测试库会截获打印到标准输出的所有内容。比如在测试中调用了 println! 而测试通过了,我们将不会在终端看到 println! 的输出:只会看到说明测试通过的提示行。如果测试失败了,则会看到所有标准输出和其他错误信息。
如果希望看到测试中打印的值:

  1. $ cargo test -- --show-output

通过指定名字来运行部分测试

  1. pub fn add_two(a: i32) -> i32 {
  2. a + 2
  3. }
  4. #[cfg(test)]
  5. mod tests {
  6. use super::*;
  7. #[test]
  8. fn add_two_and_two() {
  9. assert_eq!(4, add_two(2));
  10. }
  11. #[test]
  12. fn add_three_and_two() {
  13. assert_eq!(5, add_two(3));
  14. }
  15. #[test]
  16. fn one_hundred() {
  17. assert_eq!(102, add_two(100));
  18. }
  19. }

运行单个测试

  1. $ cargo test one_hundred
  2. Compiling adder v0.1.0 (file:///projects/adder)
  3. Finished test [unoptimized + debuginfo] target(s) in 0.69s
  4. Running unittests (target/debug/deps/adder-92948b65e88960b4)
  5. running 1 test
  6. test tests::one_hundred ... ok
  7. test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.00s

过滤运行多个测试

  1. $ cargo test add
  2. Compiling adder v0.1.0 (file:///projects/adder)
  3. Finished test [unoptimized + debuginfo] target(s) in 0.61s
  4. Running unittests (target/debug/deps/adder-92948b65e88960b4)
  5. running 2 tests
  6. test tests::add_three_and_two ... ok
  7. test tests::add_two_and_two ... ok
  8. test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 1 filtered out; finished in 0.00s

忽略某些测试

  1. #[test]
  2. fn it_works() {
  3. assert_eq!(2 + 2, 4);
  4. }
  5. #[test]
  6. #[ignore]
  7. fn expensive_test() {
  8. // 需要运行一个小时的代码
  9. }

如果只希望运行被忽略的测试,可以使用 cargo test -- --ignored。如果希望全部运行,cargo test -- --include-ignored