<分区>
假设您正在使用 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
方法是私有(private)的,因此如果您认为不应该仅仅因为它是私有(private)的就对其进行测试,那么如果它是公共(public)的,是否应该对其进行测试?