TDD最佳實踐表示新測試應該失敗。不過,我認爲有必要進行一次測試,儘管它剛剛寫入時不會失敗。編寫不首先失敗的測試
樣品的工作流程:
- 寫測試,檢查結束日期是否開始日期之前進入 - 測試失敗;
- 編寫代碼 - 測試通過;
bool Validate(Condition condition)
{
if (condition.EndDate <= condition.StartDate)
{
return false;
}
return true;
}
3.重構 - 測試仍然通過。
bool Validate(Condition condition)
{
return (condition.EndDate > condition.StartDate);
}
步驟3中我看到,如果我不是重構的條件後,我可以添加一個新的測試,檢查該方法,如果開始日期在結束日期之前返回true。但是,如果我先進行重構,那麼寫這樣的測試就意味着它會立即通過。對我來說,它看起來像測試可能會使代碼更健壯。
爲什麼要寫這樣的測試是一個壞主意/根據TDD不是一個好主意?
編輯:我現在在想,或許在實現中寫作return true;
可能不是一個好主意,我應該拋出一個NotImplementedException
。根據TDD編寫代碼是否是正確的方法?
有關此問題的思考,我意識到,我違反寫作「剛剛夠」的原則,走了一步,沒有真正思考它。在我寫任何其他測試之前,'return true;'應該已經被單元測試覆蓋了。雖然這個例子已經完成,但我不止一次遇到過類似的問題。在編寫測試時,我會盡量多注意哪些代碼是正確的。我相信,在我的例子情況下,即使測試會通過,我還是應該把它寫,否則'返回true;'不包括在內。 – 2013-04-22 16:49:23