一.控制测试的运行方式

  • 为 cargo test 指定命令行参数
  • 为 生成的测试二进制文件指定参数

1.1 向测试二进制文件传递参数

cargo test -- --help

1.1.1 并行或串行地进行测试

  • 运行多个测试时,Rust 默认使用多线程来并行执行.
  • 若不想并行测,或希望精确控制测试时所启动的线程数量,可以通过 --test-threads 控制 .
cargo test -- --test-threads=1
  • 将线程数量控制为 1, 执行顺序测试.

1.1.2 显示函数输出

cargo test -- --nocapture

1.1.3 通过显示指定来忽略某些测试

  • 某些特定测试执行起来非常耗时
  • 使用 ignore 属性来标记被忽略的测试, 将这些测试排除在正常的测试外
  • 忽略测试 : cargo test , #[ignore] 标注的方法被忽略
  • 单独测试被忽略的测试: cargo test -- --ignored , 仅 1ignore_test 被测试
#[test]
#[ignore]
fn ignore_test(){}

1.2 向 cargo test 传递参数

cargo test --help

1.2.1 只运行部分特定名称的测试

cargo test test_one

二.测试的组织结构

2.1 单元测试 : #cfg[test]

  • 在 tests 模块上标注 #cfg[test] 可以让 Rust 只在执行 cargo test 命令时编译和运行该部分测试代码,而在 cargo build 时剔除它们。
  • 无需对集成测试标注 #cfg[test] ,集成测试本身在独立的目录tests中, 与 src 目录同级别。
#cfg[test]
mod tests{
#[test]
fn test_one(){}
}

2.2 集成测试

2.2.1 单独运行特定测试文件

cargo test --test http --features="local-http, server"
  • --test : 指定文件名, 如 tests/http.rs
  • --features : 该测试需要启用的 features
cargo test --test basic -- --nocapture
  • 对集成测试 tests/basic.rs 测试,并输出内容
running 1 test
Cert-PEM=>
-----BEGIN CERTIFICATE-----
MIIBcjCCARmgAwIBAgIUf6uvgFf3AGfk5QdQdsk+Dg1NweowCgYIKoZIzj0EAwIw
ITEfMB0GA1UEAwwWcmNnZW4gc2VsZiBzaWduZWQgY2VydDAgFw03NTAxMDEwMDAw
MDBaGA80MDk2MDEwMTAwMDAwMFowITEfMB0GA1UEAwwWcmNnZW4gc2VsZiBzaWdu
ZWQgY2VydDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBn2/LLdOldPhbp0R8EJ
8r6Rc8uqsD/1rwBuIk8setf5YnzFpxHwEa6uIlfI9yvvGu5TQ7SniO5WLTe7G5de
542jLTArMCkGA1UdEQQiMCCCE2hlbGxvLndvcmxkLmV4YW1wbGWCCWxvY2FsaG9z
dDAKBggqhkjOPQQDAgNHADBEAiAVQJrfVJwGgHmyJzt6YVQPbhTZ79qrcc59N7yx
lLKx0wIgQnuQYRxGkLiVqxswtuiRIUcCQfdyv4WdJd8HOVy6vlk=
-----END CERTIFICATE-----

PKCS8-KeyPaire=>
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgkzC+sXb9Sj/ApO0i
97nczw4hM/voUtfwaxL2cPHTCj+hRANCAAQZ9vyy3TpXT4W6dEfBCfK+kXPLqrA/
9a8AbiJPLHrX+WJ8xacR8BGuriJXyPcr7xruU0O0p4juVi03uxuXXueN
-----END PRIVATE KEY-----

test test_self_signed_cert ... ok

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

更多推荐