TDD 测试驱动开发提示词:AI 结对编程「红 → 绿 → 重构」一次只走一步
想用测试驱动开发的方式实现一个功能、或者练习 TDD 时用:让 AI 当结对伙伴,每轮只提出下一个最小的失败测试,等你写实现让它通过后再重构,避免它一次性把测试和实现全写完。
通用大模型 对话模型通用
我们来做 TDD 结对编程。你负责写测试和提重构建议,我负责写实现(除非我说「这一步你来写」)。 - 语言与测试框架:[语言与测试框架](例:TypeScript + Vitest) - 要实现的功能:[功能描述] - 已知的规则和例子: [规则与例子] 工作方式(严格遵守): 1. 开始前,先把功能拆成一份「测试清单」:从最简单的情况到最复杂的情况排序,每项一句话。清单可以在过程中增删。 2. 每一轮只做一件事,并在开头标明当前阶段: - 红:从清单里挑下一个最简单、能推动实现前进的测试,只写这一个测试,说明预期它会因为什么原因失败。然后停下,等我运行测试并贴回结果。 - 绿:我贴回失败结果后,提示我「用最简单的方式让它通过」,可以是看起来很笨的写法;我贴回实现和通过结果后,你检查是否真的通过、有没有写多余的代码。 - 重构:在所有测试通过的前提下,指出实现和测试代码里的重复、命名问题、可以简化的地方,每次只建议一处改动;没有需要重构的就说明并进入下一轮。 3. 不要一次写多个测试,不要提前写出完整实现。 4. 每轮结束时更新测试清单,用「已完成 / 待做 / 新发现」标记。 5. 如果我的实现明显超前(写了还没有测试覆盖的逻辑),提醒我先补测试。 现在开始:先给出测试清单,然后进入第一轮「红」。
高亮处换成你自己的内容:[语言与测试框架]、[功能描述]、[规则与例子]
ChatGPT Plus 充值
已被复制 0 次
使用说明
怎么填变量:[已知的规则和例子] 写成具体的输入输出最好,比如「空字符串返回 0;"1,2" 返回 3;负数要报错并列出所有负数」。经典练习题(字符串计算器、保龄球计分、罗马数字转换)很适合第一次用这条提示词。
常见坑:
- AI 很容易「急」,一次把五个测试和完整实现都写出来。如果发生了,直接回复「只保留第一个测试,其余删掉」,它会回到节奏上。
- 「绿」阶段写最简单的实现(甚至直接返回固定值)是 TDD 的正常做法,下一个测试会逼着实现变得通用。不要跳过。
- 重构阶段只改结构不改行为,改完测试必须仍然全部通过。
追问技巧:完成后追问「回顾这次的测试清单,哪些测试其实是多余的、哪些边界还没覆盖」;也可以说「这一步你来写」,让 AI 示范一次实现再换回来。
示例输出
示例,仅供参考(功能:字符串计算器)
测试清单:
- 空字符串返回 0
- 单个数字返回它本身
- 两个逗号分隔的数字求和
- 任意多个数字求和
- 支持换行作为分隔符
- 负数抛出错误,错误信息列出所有负数
当前阶段:红
ts
import { describe, it, expect } from 'vitest'
import { add } from './calculator'
describe('add', () => {
it('空字符串返回 0', () => {
expect(add('')).toBe(0)
})
})
预期失败原因:calculator 模块和 add 函数还不存在。请运行测试并把结果贴给我。
同款作品
用这条提示词做出来的作品;原作者会因此获得积分
还没有同款,来做第一个。



0 条评论
还没有评论,来抢沙发~