写完代码再补单元测试,这件事在Agent时代变得更危险了。作者转述了 @anshnanda 写在 AGENTS.md 顶部的三条测试规则,第一条就直接点名:严禁写完代码再补单测。
理由很直接——事后补写的单测,尤其是Agent生成的,往往只是把实现逻辑复述一遍。代码怎么写,测试就怎么断言。这种测试验证不了正确性,只制造出「有测试覆盖」的假象。
绿灯不等于证据
第二条规则把验证标准整个换掉了:首选E2E测试作为唯一验证机制,结束时必须产出可验证、可复现的产物。
判据不是「测试绿灯」,而是一份能留档、能重跑、能被人检查的证据。从真实用户路径出发,验证功能确实能用,把验证从「测试通过」升级为「拿出证据」。
这个转变听起来只是措辞差异,实际影响的是整个测试的产出物形态。绿灯是瞬时状态,证据是可以被第三方复核的东西。
先穷举失败,再动手写
第三条规则针对隔离测试:如果确有必要隔离测试某个系统,先穷举它所有可能的失败方式,再动手写代码。
顺序不能反。失败模式驱动的前置测试,让测试承载设计意图,而不是事后镜像实现。这和第一条规则是同一个逻辑的两面——测试要跑在实现前面,才有资格叫验证。
三条规则串起来看,指向的是同一件事:
- 禁止事后补单测——避免测试退化为实现逻辑的同义反复
- 首选E2E并产出可验证产物——把判据从绿灯换成证据
- 隔离测试前先穷举失败方式——让测试承载设计意图
作者在文末附上了三条规则的英文原文,方便直接抄进自己的 AGENTS.md。
热门跟贴