核心功能
Rust Testing Code Review 是一款专为 Rust 生态设计的测试代码审查工具,系统化覆盖测试组织的各个维度:
测试结构规范
- 强制区分单元测试(
#[cfg(test)]模块内嵌)与集成测试(tests/目录独立文件) - 推崇
use super::*标准模式,确保测试模块可访问父级私有项 - 命名规范:
test_<function>_<scenario>_<expected>或<function>_should_<behavior>_when_<condition>
异步测试深度支持
- 原生识别
#[tokio::test]及多线程变体(flavor = "multi_thread") - 禁止
block_on反模式,强制.await直接调用 - 支持测试超时配置,预防挂起测试
断言与错误检测
- 推广
assert_eq!/assert_ne!替代裸assert!以获取更优错误信息 - 引入
matches!宏进行枚举变体精确匹配,避免字符串比较 - 强调单断言原则,简化失败诊断
Mock 与测试替身
- 基于 Trait 的依赖注入设计,隔离外部依赖
- 禁止 mock 第三方类型,要求封装为自有 Trait
- Fixture 函数化,杜绝全局可变状态
高级测试模式
- 快照测试(
cargo insta):复杂结构化输出(JSON/YAML/HTML)的回归防护 - Doc 测试:公共 API 示例即测试,双向保障文档正确性
- 属性测试:推荐
proptest/quickcheck覆盖边界情况
显著优点
- 分层严重度体系:Critical/Major/Minor/Informational 四级校准,精准定位风险
- 白名单机制:明确列出不应标记的有效模式(如测试中的
unwrap()),减少误报 - 领域深度:针对 Rust 所有权、异步运行时、宏系统的特性定制规则
- 工作流集成:支持
cargo test --doc、nextest等工具链差异
局限与注意事项
- 工具链依赖:部分规则(如
tokio::test)绑定特定异步运行时,对async-std用户需适配 - 快照测试成本:维护
snapshots/目录增加仓库体积,合并冲突风险 - 过度工程风险:小型项目可能无需完整分层测试结构
适用人群
- 维护中大型 Rust 库/服务的开发团队
- 追求测试覆盖率与 CI 稳定性的基础设施项目
- 需要审计第三方 Rust 代码的安全审查人员
常规风险
- 严重级:断言验证错误值、测试间共享可变状态、安全关键代码缺错误路径测试
- 主要级:无
expected的#[should_panic]、测试依赖执行顺序