用途:该技能以红-绿-重构循环指导测试驱动开发,适用于新增功能或修复缺陷。核心理念是测试通过公共接口验证行为而非实现细节,让测试像规范一样描述系统能力,并能在内部重构后保持稳定。
主要能力与原则:好测试面向用户或调用者关心的行为,只用公共 API,描述“做什么”而非“怎么做”,每个测试一个逻辑断言。坏测试耦合实现,如模拟内部协作者、测私有方法、绕过接口验证,或断言调用次数与顺序,重构时容易误报。模拟只应放在系统边界,如外部 API、数据库、时间/随机性、文件系统,不应模拟自己控制的类、模块或内部协作者。倾向依赖注入,让外部依赖可替换。接口设计应接受依赖而非内部创建、返回结果而非产生副作用、缩小接口面积,并设计小接口加深实现的深模块。
工作方式:先规划,与用户确认接口变更与需要测试的行为并排序,设计可测试接口,列出待测行为并获得批准。随后用“曳光弹”方式写一个测试确认一件事:RED 写测试、运行并确认正确失败;GREEN 写最小代码、运行并确认通过。测试若立即通过说明测的是已有行为,需修正。接着对剩余行为逐一进行红绿循环,一次一个测试,只写够通过当前测试的代码,不为未来测试提前设计。全部通过后再重构,消除重复、加深模块、按需应用 SOLID,并在每步重构后运行测试。不要在 RED 状态重构。
反模式与限制:禁止横向切片,即先写完所有测试再写全部实现。应使用垂直切片和曳光弹:一个测试对应一个实现,循环推进。每个循环自查:测试描述行为而非实现、只用公共接口、能抵抗内部重构、代码对当前测试最小、无多余功能、先看到测试失败且失败原因符合预期、其他测试仍通过。修复缺陷时同样先写复现缺陷的测试。资料未提供安装命令、定价、平台或具体工具链细节。