假設您正在使用TDD開發產品。您逐漸添加測試,並以一種大方法結束。現在是重構的時候了,因此您可以用較小的方法分離該方法。例如;爲提取的方法添加單元測試
// Before refactoring.
public void SomeMethod()
{
// ...
int sum = numbers.Sum();
// ...
}
// After refactoring.
public void SomeMethod()
{
// ...
int sum = GetSumOfNumbers(numbers);
// ...
}
private GetSumOfNumbers(int[] numbers)
{
return numbers.Sum();
}
經過這一步後,您應該爲GetSumOfNumbers
方法編寫測試嗎?我認爲當我們測試SomeMethod
時,我們已經測試了GetSumOfNumbers
。但與此同時,可能有其他方法使用GetSumOfNumbers
,即使它適用於SomeMethod
,它可能不適用於另一種方法。這將幫助我們更快地找到問題(因爲測試會給出更具體的錯誤)。但同時,也許這沒有用,並且增加了詳細程度。
您對此有何看法?在這個例子中,GetSumOfNumbers
方法是私有的,所以如果你認爲它不應該被測試,因爲它是私人的,它應該被測試,如果它是公開的?
+1。我喜歡把它推出去的建議。 –
正如我在問題的最後提到的那樣,如果我決定該方法最終應該公開並公開發布,該怎麼辦?我應該爲該方法編寫測試嗎? – hattenn
@hattenn:當然,看到我的答案的第一句話:「你應該測試你的類的公共API」。如果您公開該方法,它將成爲公共API的一部分。 –