假設我有一個用戶類有一個方法is_old_enough?TDD是否意味着我必須爲每種方法編寫一個測試,不管它有多複雜?
該方法只是檢查年齡超過18歲。看起來很簡單。
TDD是否意味着我必須爲此寫一個測試,即使它很微不足道?
class User
def is_old_enough?
self.age >= 18
end
end
如果是這樣,爲什麼?爲此編寫測試有什麼好處?你只需要測試x> = y是否符合你期望> =操作符的工作方式。
因爲我看到的情況是最有可能的情況是:
原來的年齡實際上應該是21.這是該測試沒有趕上一個錯誤,因爲他們有錯誤的假設,當我們寫代碼。然後他們進入並將方法更改爲> = 21。但是現在測試失敗!所以他們必須去改變測試。所以測試沒有幫助,並且在重構時實際上給出了誤報。
看起來像這樣簡單的方法測試實際上沒有測試任何有用的東西,實際上是傷害你。
我認爲「測試驅動」是指你測試你的代碼。這並不意味着你必須變得愚蠢。另一方面,有時候相對簡單的代碼可能會有錯誤。如果有人在一個地方改變了定義,測試可能會失敗。您必須同時進行積極和消極的測試(例如「過關18分,失敗17分」)。如果限制更改爲16,則您的第二個測試現在將失敗。我總是告訴人們:「當你學習新的東西時,不要拔掉常識模塊爲新信息留出空間」。 – Floris
使用TDD,您不需要爲方法編寫測試,而是爲測試編寫一個或多個方法。你首先寫一個描述一些理想但尚未實現的行爲的測試。然後你寫出必要的代碼來通過測試。 –