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 條評論
還沒有評論,來搶沙發~