用途:帮助编写能捕捉真实缺陷的 Rust 测试。每个测试须守护一条明确不变式,而非仅证明代码“能跑”。
主要能力:
- “What Could Break?”框架:写测试前回答四问——维护什么不变式、什么边界会破坏它、什么平台差异会浮现、未来重构会意外破坏什么。
- 五类测试转化:弱断言改为整对象比较(pretty_assertions::assert_eq);单一 happy path 改为覆盖正常/错误/边界/平台的针对性用例集;内联 mod tests 改为同级 _tests.rs 文件(mod.rs 用 mod_tests.rs);字符串测试数据改为类型化结构体构造(工厂函数);fixtures 中的 HashMap 改为 BTreeMap 以保证确定性。
- Flake 排查协议:定位竞态窗口、用事件驱动同步替代 timing、断言与顺序无关、压力测试 cargo nextest run -p <crate> -j 2 --no-fail-fast --stress-count 50 --status-level leak、在提交信息中记录非确定性来源。
- 意图断言:断言操作与目标(如 operation()/target()),而非精确命令字符串。
- 命名规范:{subject}{scenario}{expected_outcome}。
用法与工具:HTTP 用 wiremock::MockServer;文件系统用 TempDir(tempfile);异步用 #[tokio::test];快照用 insta::assert_snapshot!;枚举用 assert_matches!。自检清单要求使用 pretty_assertions、整对象比较、每个函数至少 3 个测试、无 sleep 断言、无环境变量变更等。
限制:资料未提供所属平台、安装方式、收费标准与具体适用 Rust 版本,暂未提供。