生成测试
单元测试草稿、Mock 生成、需人工验收。
25 分钟
生成测试
AI 可 起草 JUnit 用例、Mockito stub、前端 component test——速度比手写快。但 断言是否正确、是否测到要害,只能由人与 绿测 决定;见 testing-essentials 全 track。
学习目标
- 用 AI 生成单元测试草稿并人工修正
- 知道 Mock 生成时的常见错误(过度 mock、测实现细节)
- 坚持「AI 写测、人验收」纪律
有效 prompt 示例
为 RoadmapService#getTrack(slug) 写 JUnit 5 + Mockito 单元测试。
参照同目录 RoadmapServiceTest 风格。
覆盖:slug 存在、slug 不存在、mapper 抛异常。
不要连接真实 DB;不要改 production 代码。
提供 同类测试文件 @ 引用,比空描述风格更稳。
AI 生成测试的常见问题
| 问题 | 表现 | 处理 |
|---|---|---|
| 幻觉 API | 不存在的方法 | IDE 编译即暴露 |
| 弱断言 | 只 assertNotNull | 补具体值与 verify |
| 过度 mock | 全 mock 无行为 | 对照 test-mockito |
| 漏边界 | 无空串、无权限 | 人补用例表 |
规则:生成测试 PR 的 reviewer 应问:「删掉 AI 写的断言,失败测试会变红吗?」
MockMvc 与集成层
AI 可草拟 test-mockmvc 请求 JSON,但:
- URL、status code 以 Controller 为准
@SpringBootTest慢,不要 让 AI 一次生成 50 个集成类
分层策略见 test-intro 金字塔。
与 CI 衔接
测试写完必须:
cd backend && mvn test
CI 红则 不得 因「AI 说应该过」而 merge——见 test-ci。
不为覆盖率而 AI 量产
让 AI 「把覆盖率提到 80%」常得到 无意义断言。优先 关键路径与回归,对齐 test-coverage 的警示。
练习
- 选一个无测试的 private 方法,AI 生成测试 → 你改到能表达业务意图
- 故意让 AI 生成一条错误断言,确认
mvn test能抓出 - 在 PR 描述写:哪些用例 AI 起草、你改了什么