单元测试AI 编程覆盖率测试代码审查
AI 单测覆盖率攻坚:用 AI 编程工具补齐单元测试的实践指南
发布 2026-09-09更新 2026-09-09
适用人群
三类人:接手遗留代码库、测试几乎为零的人、覆盖率卡在 40–60% 上不去的人、想用 AI 把「补测试」从苦役变成流水线的人。
目标不是追求 100% 覆盖率的数字游戏,而是用 AI 把关键路径与边界条件的测试快速补齐,让重构与发布有安全网。
工作流总览
- 先量后补:跑一次覆盖率报告,定位「零覆盖」文件与低覆盖函数,列出缺口清单
- 按风险排序:优先核心域、资金 / 权限 / 解析逻辑,而不是按文件顺序平推
- AI 生成初版用例:把函数 + 现有调用方喂给 AI,让它产出测试骨架
- 人工订正断言:AI 容易写出「永远通过的假测试」,必须核对断言是否真在验证行为
- 补分支与异常路径:让 AI 专门针对
if/else、空值、超时、错误码生成边界用例 - 接 CI 门禁:把覆盖率阈值写进流水线,低于阈值阻断合并
各工具怎么用
- Cursor / Claude Code / Aider:在编辑器内选中函数,用「为这个函数写单测」类指令生成;Claude Code / Aider 还能跨文件理解调用关系,适合补集成层测试。注意让模型先读测试文件约定(框架、mock 方式),保持风格一致。
- Qodo 等 AI 代码审查工具:不只补测试,还能在 PR 阶段标出「改动未覆盖」的语句,把覆盖率检查前移,避免事后补测。
- CI 侧:用
vitest --coverage/pytest --cov出报告,设门禁(如整体 ≥70%、新增代码 ≥80%)。
常见坑
- 假测试:AI 生成的用例若断言过松(只
expect(true).toBe(true)或只断言「不抛错」),覆盖率会涨但质量为零。务必审断言。 - .mock 滥用:过度 mock 会让测试通过但脱离真实行为;关键路径保留真实依赖或轻量集成测试。
- 忽视测试可维护性:测试也要随代码演进;让 AI 在改实现时同步改测试,别留过期用例。
- 只追百分比:UI / 胶水层追求高覆盖性价比低,把额度留给核心逻辑。