← ClaudeAtlas

test-driven-developmentlisted

使用時機:實作任何功能或修 bug 時,在寫實作程式碼之前
shumingyang-opencode/superpowers-zh-tw · ★ 0 · AI & Automation · score 69
Install: claude install-skill shumingyang-opencode/superpowers-zh-tw
# 測試驅動開發(TDD) ## 總覽 先寫測試。看著它失敗。寫最少的程式碼讓它通過。 **核心原則:** 如果你沒親眼看到測試失敗,你就不知道它測試的是不是對的東西。 **違反規則的字面,就是違反規則的精神。** ## 使用時機 **一律使用:** - 新功能 - 修 bug - 重構 - 行為變更 **例外(問你的真人夥伴):** - 用完即丟的原型 - 產生的程式碼 - 設定檔 心裡想「這次就跳過 TDD 吧」?停。那就是合理化藉口。 ## 鐵律 ``` 沒有先寫失敗的測試,就不准有正式程式碼 ``` 在測試之前先寫了程式碼?刪掉。重新開始。 **沒有例外:** - 不要把它留著當「參考」 - 不要邊寫測試邊「改寫」它 - 不要看它 - 刪掉就是刪掉 從測試開始全新實作。就這樣。 ## 紅-綠-重構 ```dot digraph tdd_cycle { rankdir=LR; red [label="RED\nWrite failing test", shape=box, style=filled, fillcolor="#ffcccc"]; verify_red [label="Verify fails\ncorrectly", shape=diamond]; green [label="GREEN\nMinimal code", shape=box, style=filled, fillcolor="#ccffcc"]; verify_green [label="Verify passes\nAll green", shape=diamond]; refactor [label="REFACTOR\nClean up", shape=box, style=filled, fillcolor="#ccccff"]; next [label="Next", shape=ellipse]; red -> verify_red; verify_red -> green [label="yes"]; verify_red -> red [label="wrong\nfailure"]; green -> verify_green; verify_green -> refactor [label="yes"]; verify_green -> green [label="no"]; refactor -> verify_green [label="stay\ngreen"]; verify_green -> next; next -> red; } ``` ### 紅 - 寫失敗的測試 寫一支最小的測試,顯示應該發生什麼事。 <Good> ```typescript test('retries failed operations 3 times', async () => { let attempts = 0; const operation = () => { attempts++; if (attempts < 3) throw new Error('fail'); return 'success'; }; const result = await retryOperation(operation); expect(result).t