2013-08-03 37 views
2

TDD中紅色,綠色,重構(RGR)工作流的參考文獻建議,如果需要的話,可以通過編寫「有罪」的代碼快速獲得綠色(Kent Beck在TDD舉例說「快速綠色藉口所有罪惡」),然後重構以改進設計。我不清楚何時最好做重構步驟。紅色,綠色,重構:在每個測試用例之後重構,還是整個測試套件充實?

可以說我正在生產BookByIsbn REST服務。我可能會產生以下順序(只是爲了討論的方便)測試用例RGR的

"produces 404 (not found) if book does not exist" 
"produces 400 (bad request) if isbn is invalid" 
"returns 200 and entity if book found" 
etc 

義解釋似乎表明,我後迅速得到每個測試用例綠色重構。但是這可能導致多次重構到下一個測試用例失效的設計。我感覺延遲重構步驟,直到完整測試套件是綠色的,當我完全知道服務必須做的所有事情時,這是執行TDD的更有效方法。

所以,問題是:RGR最好通過自律來重構每一個綠色,或者延遲這個步驟,直到更多的需求變得更有效爲止。

回答

8
  • 每個綠色的重構。
  • 重構生產代碼和測試代碼。

這確實意味着有時候設計是非常短暫的。但這意味着代碼對於當時的編碼需求(測試,隨着它們的增長)始終是最佳表達方式。

+0

+1,但我想指出,有時重構步驟是無操作的。真正的答案是「只要代碼需要它,你就可以安全地重構。」另外,當他們是紅色時,我更喜歡重構測試,因爲他們測試測試「是否失敗」,因此您無法安全地重構綠色測試。 – tallseth