TDD 001 - 從 Kata 練習 TDD 循環
本次課題為透過「 String Calculator - osherove.com 」這道 Kata,練習 TDD 循環。
前言
本系列為 TDD 測試驅動開發的練習文,會持續寫一段時間,並把過程透過日記形式寫下來。
TDD 循環
練習環境
- PHP 7.3.28
- Laravel 8.48.2 開個新的專案用來練習寫測試
- composer 裝的
phpunit/phpunit
為9.5.6
練習重點
練習 TDD 的思考方式,與實作的順序。
遵循以下順序開發:
- 寫測試(只測一件事) >
- 測試執行得到紅燈 >
- 寫對應方法 >
- 測試執行得到綠燈 >
- 重構 >
- 測試執行得到綠燈 >
- 回歸測試得到紅一些/全部紅燈 > 修復對應功能與測試 > 回歸測試得到全部綠燈
- commit >
- 寫測試 (只測一件事,或新的測試案例)
練習「快速反應下一步」應該要做的事是什麼
練習題 (Kata)
這題為單元測試的藝術作者提供的 Kata: String Calculator - osherove.com
練習結果
請參考 commit 過程。
筆記
記錄一下遇到的問題
- 如果往下測試 > 實作,遇到設計上不容易測試的話,可先退回重構,完成重構,才重新繼續下一個紅燈
- 除了TDD 的順序要注意外,記得測試通過就先看要不要重構,並遵守 SRP (重構觀念也要持續學習)
- 若有覆寫
setUp()
不可省略parent::setUp()
- 實作到 pdf 中的第 11 個測試案例時,重構了一大段,直到綠燈,但覺得應該有更好的寫法,目前寫法都是把
delimiter
改為,
在去切開numbers
最後
透過這種有題目的方式練習 TDD,會比純看書或看網路文章還要來得,更有心得;有任何問題或想法,歡迎留言交流,如果寫的內容有錯誤的地方,希望能不吝指點,感謝。
參考連結
- String Calculator - Roy Osherove Agile & XP Consulting & Training
- 程式設計師升級必練內功:TDD Kata - ihower
- KataCatalogue - Coding Dojo
文章作者: littlebookboy
永久鏈結: https://littlebookboy.github.io//2021/06/tdd-daily-001-tdd-cycle-practice/
許可協議: 署名-非商業性使用-相同方式共享 4.0 國際(CC BY-NC-SA 4.0)