测试与 TDD
默认快速开发。测试保护当前需要的行为,不记录代码改动历史。
选择验证方式
先看受影响的现有验证。新增用例应针对当前需求中的具体错误和未覆盖风险;新增、重构或删除文件、函数本身不是理由。这个判断不要求额外文档或固定格式汇报。
- 有可算错的业务规则、映射、权限或失败路径时,用少量行为测试补缺口;修 bug 先复现,再修复并验证。探索阶段先跑通,契约稳定后固定预期。
- 纯重构、接线、类型和薄包装优先工程检查与已有消费者测试;文案、样式和布局做浏览器验收,同步必要的已有断言或 locator。
- 删除功能、废弃分支或死代码时直接清理实现及专属测试、fixture、mock 和快照;混合用例保留仍有效的断言,不要求删一个补一个。
测试与清理原则
- 预期来自需求、协议或独立事实。错误实现应让断言失败,内部等价重构应仍通过;不复制实现生成答案,也不锁死非契约性的结构。
- 执行真实被测路径,只在必要边界替换外部依赖。验证关键结果,确保断言实际执行、异步结果被等待、错误传到测试运行器。
- 不为覆盖率或用例数量堆测试,不为凑用例新增业务不需要的实现。不同层的用例应覆盖不同失败原因。
- 删除不留防恢复测试:不新增「block recovery」、源码禁词或旧文件/符号不存在的守卫,不把旧测试改成「已移除版本」,也不留下空壳、跳过用例或占位兼容实现。清理残留用一次性搜索和工程检查,不固化成扫描脚本或 CI 规则。
- 删除动作不产生新的拒绝或兼容契约;当前需求确实要求的负向行为仍应验证,例如越权不能写入、响应不得泄露敏感字段。
判断删除、mock、快照等具体用例的价值,或需要命名与断言示例时,按需查看 常见误区与来源。
完成条件
沿用仓库现有验证方式,不为小改动新建测试栈。运行受影响的检查,前端变更完成浏览器验收;仅在新失败或未覆盖风险需要时扩大范围。测试顺序服务于契约验证和错误复现,不机械追求红绿流程。
已有测试失败时,按当前需求判断:失效断言应更新或删除;仍有效的断言不能为变绿而放宽、跳过或照抄实际输出。修复当前改动及直接相关的问题,复验后交付,不借机重写整套测试。没有新增测试也可以完整交付,报告实际验证结果即可。