単体テストの場合、同じメソッドをテストするエッジケースにはそれぞれ別のテストメソッドが必要です。たとえば、次の関数に渡される空の文字列をテストします。
public function add($numbers)
{
$numbers = preg_replace('/\s/', '', $numbers);
if ($numbers === "") {
return 0;
}
}
私は明らかに次のようなエッジケースをキャッチしたい:
""
" "
"\t \n"
"asd"
等
では、この方法が機能することを証明するには、いくつのテスト方法が必要になるでしょうか?
public function testAddEmptyString()
{
$stringCalculator = new StringCalculator();
$this->assertSame(0, $stringCalculator->add(""));
}
public function testAddEmptyStringWithSpaces()
{
$stringCalculator = new StringCalculator();
$this->assertSame(0, $stringCalculator->add(" "));
}
public function testAddEmptyStringWithCharacters()
{
$stringCalculator = new StringCalculator();
$this->assertSame(0, $stringCalculator->add("asd"));
}
これは、テストクラスには、重要なメソッドの大量のメソッドが含まれているようです