這時候,又有兩種選擇,有人喜歡自頂向下,有人喜歡自底向上,我個人更傾向于前者。
現在開始,只要照著 紅-綠-重構 的循環去做就可以。
大部分 TDD 做不好,就是沒有前面的任務分解和列 Example 的過程。
FAQ
為什么一定要先寫測試,后補測試行不行?
行,但是要寫完實現后,馬上寫測試,用測試來驗證實現。如果你先手工測試,把代碼都調試好了,再補單元測試,你就會覺得很雞肋,還增加了工作量。
不管測試先行還是后行都可以享受到快速反饋,不過如果測試先行,你就可以享受另一個好處,使用意圖驅動編程減少返工。因為你的測試代碼就是產品代碼的客戶端(調用者),你可以在測試代碼里寫成你理想的樣子(方法名,參數,返回值等),再去實現產品代碼,比起先寫實現后寫測試,前者返工更少。
剛寫了一個測試,還沒寫實現。明知道運行測試一定會報錯,為什么還要去運行?
其實測試的運行結果并非只有通過與不通過兩種,因為不通過時有很多種可能。所以在明知道一定失敗的情況下去運行測試,目的是看看是不是報了期望的那個錯誤。
小步快走確實好,但真的需要這么小步嗎?
原文轉自:http://www.jianshu.com/p/62f16cd4fef3