用途:为 Rust 代码设计、实现并验证测试,依据《The Rust Programming Language》第 11 章及 Rust Book。适用于“写单元测试”“集成测试放哪里”“如何写文档测试”“性能基准”“检查覆盖率”等场景。前置要求:理解 Rust 模块系统(rust-workspace)。
主要能力:单元测试(#[test]、#[cfg(test)] 组织测试模块);断言宏(assert!、assert_eq!、assert_ne!、debug_assert!);测试属性(#[should_panic]、#[ignore]、#[cfg(test)]);集成测试(tests/ 目录与共享模块);文档测试(代码块、隐藏行 #、should_panic/no_run/ignore 标志);cargo test 运行器(过滤、--nocapture、--test-threads、--include-ignored 等);稳定版 Criterion 基准(并明确区分仅 nightly 的 libtest #[bench]);使用 cargo-llvm-cov 做代码覆盖率;异步竞态、背压、超时、进程/守护模型、平台矩阵与资源受限测试。
用法要点:单元测试写在 #[cfg(test)] mod 内;集成测试每个文件是独立 crate,放入 tests/ 目录,辅助代码放 tests/common/mod.rs;文档测试写在 /// 注释的可执行代码块中。常用命令:cargo test、cargo test test_name、cargo test -- --nocapture、cargo test -- --test-threads=1、cargo test --doc、cargo test -p my-crate。覆盖率:先 cargo install cargo-llvm-cov,再 cargo llvm-cov、cargo llvm-cov --open、cargo llvm-cov --lcov --output-path lcov.info。稳定版基准使用 Criterion(dev-dependencies 中引入),#[bench] 需 #![feature(test)],不可作稳定默认方案。
限制与注意:属性测试(proptest)与 mock 对象暂未覆盖;基础 Rust 语法请用 rust-stable 技能。若需处理 Java 迁移套件、镜像测试与差分证据等,请改用 rust-java-migration-testing。集成测试文件内不能用 super:: 或 crate::;#[cfg(test)] 代码不进入 release 构建;cargo test 默认并行,共享资源可考虑唯一临时目录/端口、进程隔离或 nextest 分组;异步测试给宽泛超时可能掩盖死锁原因。