drill-tdd 是来自 kucherenko/gangsta 的技能,用于在实现任何功能或修复缺陷时强制执行测试驱动开发(TDD)纪律。其核心原则是:没有先失败的测试,就不允许编写生产代码;没亲眼看到测试失败,就无法确认测试测的是正确行为。
主要用途:新功能、缺陷修复、重构和行为变更时都应使用。例外仅限一次性原型、生成代码和配置文件,且需先询问。
使用方式遵循红灯—绿灯—重构:红灯阶段先写一个最小失败测试,测试应名称清晰、只测一个行为、尽可能使用真实代码而非 mock;随后必须运行并确认测试因功能缺失而失败,失败信息符合预期。绿灯阶段写最少代码使测试通过,不添加额外功能;再次运行确认测试通过、其他测试仍通过且输出无错误警告。重构阶段仅在绿灯后进行,去重、改进命名、提取辅助函数,并保持测试绿色,不新增行为。之后对下一行为重复循环。
限制与铁律:一旦在测试前写了生产代码,必须删除并从测试重新实现,不得保留作参考、不得在写测试时改编、不得查看;删除就是删除。测试立即通过说明它测的是既有行为,须修正测试。测试报错而非失败时,先修错误直到正确失败。无法解释失败原因、事后补测试、用“就这一次”合理化等均为红旗信号,应删除代码、重新开始。
质量要求:每个新函数或方法都有测试;每个测试都先看过失败;失败原因正确;只写最小通过代码;全部测试通过;输出干净;优先真实代码;覆盖边界与错误。遇到缺陷时先写复现失败测试再修复。资料未提供安装命令、收费、价格、平台或具体运行环境等信息。