用途:为 Rust 项目提供一套系统地诊断和修复失败测试的方法,适用于测试失败后需要定位根因的场景,例如异步/await 问题、数据库连接问题、竞态条件、类型不匹配与生命周期错误。
主要能力与流程:
- 定位失败测试:cargo test --all、cargo test test_name -- --exact --nocapture。
- 本地复现:带调试日志 RUST_LOG=debug cargo test test_name;针对竞态可强制单线程 cargo test test_name -- --test-threads=1。
- 根因诊断:资料给出模式与修复对照,包括 Async/Await(future cannot be sent,添加 .await、使用 Arc<Mutex>)、Database(connection refused,检查环境变量、使用测试库)、Race(间歇性断言失败,加 Mutex、串行执行)、Type(expected X, found Y,更新签名、添加转换)、Lifetime(borrowed value,克隆数据、调整生命周期)。
- 验证修复:循环多次运行单个测试(for i in {1..10}; do cargo test test_name -- --exact || break; done),再运行完整套件 cargo test --all。
- 回归预防:为已修复的具体缺陷补充测试。
调试检查清单:单独运行失败测试、检查环境变量、查看近期改动、检查是否缺少 .await、验证数据库连接、查找竞态条件、检查类型兼容性。
常用工具命令:RUST_LOG=debug cargo test、RUST_BACKTRACE=full cargo test、RUST_LOG=memory_core=debug cargo test。
跳过与立即修复的取舍:可临时跳过的情况包括外部服务不可用、平台特定问题、已知上游缺陷;应立即修复的情况包括逻辑错误、断言不正确、缺少错误处理。
限制:资料未说明该技能适用的 Rust 版本、依赖环境、并行执行的具体配置细节,也未提供收费、平台或效果数据;上述命令与修复方式均来自资料,实际使用需结合具体项目验证。