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
メソッドが非公開になっているため、非公開だからといってテストするべきではないと考える場合、公開されている場合はテストする必要がありますか?