假设您正在使用 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
方法是私有的,所以如果你认为它不应该仅仅因为它是私有的而被测试,那么如果它是公共的,它应该被测试吗?