AI 生成的测试最容易出现「测了等于没测」:只跑 happy path,断言还特别弱。拿来当骨架可以,直接当覆盖率就危险了。
有次我让 Copilot 给一个 Service 补测试,它确实把方法都覆盖了,但每个测试只传正常入参、断言也只写了 Assert.NotNull(result)。分支没走、异常没验,覆盖率看着挺高,实际等于没测。后来我对着它生成的清单一条条补,反而比自己从零写还费时间。
真正该补的是边界和异常:空值、超长字符串、并发重复插入、依赖返回 null 时业务怎么兜底。这些 AI 不会主动想,得你点名它才补。我的习惯是让它先出骨架,然后我单独列一张「异常分支清单」喂回去。
拿一个按订单号查订单的方法举例,除了正常返回,至少还要补三个:
- 订单号不存在时返回什么、HTTP 状态对不对
- 传入 null 或空字符串时抛什么、还是静默返回
- 并发查同一单会不会重复初始化或重复落库