TDD by Matt Pocock

使用 Matt Pocock 的 TDD,分步实现并验证新功能或缺陷修复。先约定需要测试的公开接口,再编写一条会失败的行为测试,补足使其通过的最小实现,然后根据反馈选择下一步工作。

安装与快速上手

选择你使用的 Agent,查看对应的安装或使用方式。在 Floatboat 中,可复制请求让 Agent 读取原始说明;其他选项会显示该 Skill 的安装命令或发布者提供的原生步骤。

选择 Agent

在 Floatboat 中开始

复制请求,粘贴到 Floatboat 对话

请阅读 https://github.com/mattpocock/skills/blob/main/skills/engineering/tdd/SKILL.md 中的 TDD 原始说明,介绍它的用途、所需工具和安装方式,再协助我使用。

由 Agent 读取原始说明,再确认当前环境的使用方式。

下载 Floatboat ↗

试试这样提问

使用 Matt Pocock 的 TDD 完成结账折扣修改,先提出公开测试边界,再用失败测试逐项实现行为。

关于 TDD

TDD 是 Matt Pocock 面向测试先行实现发布的参考 Skill,强调通过公开接口验证行为。它要求用户与 Agent 在写测试前先约定测试边界,使工作聚焦于有意义的能力,而不是私有实现细节。每轮先写一条失败测试,再完成使其通过的最小实现,并依据反馈选择下一项小任务。当前原文明确把重构放在审查阶段,而非混入红灯到绿灯的实现循环。集合提供测试与模拟参考资料;接口本身尚未确定时,还需参考 codebase-design 的共同术语。使用仍依赖项目已有测试环境,以及可独立判断的预期行为。

测试先行开发的使用场景

探索具有明确可观察结果的测试先行任务。可以为公开接口新增能力、锁定可复现缺陷,或补足关键集成路径,同时保持测试独立于内部结构,并核对每条新增测试确实能够捕获目标失败。

新增可观察能力

说明调用方应获得的能力,并通过公开接口验证结果。

保护缺陷修复

选择能真实复现故障的测试边界,避免断言无关内部细节。

覆盖关键集成

使用已知预期结果,验证跨越关键边界的真实行为。

如何用 TDD 实现行为

准备行为要求与可运行的测试命令,再与 Agent 约定公开测试边界。每次只完成一条失败测试及其最小实现,在行为得到验证后另行审查更广泛的整理与重构,避免同时改变多个问题。

  1. 01

    约定测试边界

    提供行为要求与测试命令,确认重要公开接口及每条测试能捕获的问题。

  2. 02

    完成一轮红灯到绿灯

    编写因目标问题而失败的测试,再仅实现使其通过的必要行为。

  3. 03

    继续迭代并另行审查

    依据上一轮证据选择下一项小任务,在目标行为可用后另行审查重构。

探索更多 Agent Skills

查看其他 Skill 指南,并在使用前核对原始来源。

TDD 常见问题

安装这个 TDD Skill 会获得什么?
它为 Agent 添加指令与参考资料,不会自动安装测试运行器或配置项目依赖。
为什么写测试前先约定边界?
边界指通过哪个公开接口观察行为。预先约定有助于聚焦关键路径,避免测试依赖私有细节。
是否应该先写完所有测试?
原文主张纵向小步:一条测试跟随一份实现,再随理解深入继续。批量设想测试可能过早固定错误结构。
最新版要求每轮都重构吗?
不要求。当前原文将重构放在审查阶段,而非红灯到绿灯的实现循环。较早摘要可能沿用较宽泛的三段式说法。
什么样的预期结果可信?
依据独立于实现的规范、推导示例或已知正确值。断言中重写同一算法可能掩盖相同缺陷。
什么时候需要 codebase-design?
公开接口或模块深度尚未确定时可参考它。集合将其作为共同设计术语,而非额外访谈流程。
它能保证测试覆盖完整吗?
不能。它指导测试选择与实现,仍需根据项目风险选择行为并验证测试有效性。