💻
【PHPUnit】複数パターンの同一テストの一元化(@dataProvider)
複数パターンのテスト
TestCase.php
tests/TestCase.php
<?php
namespace Tests;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
abstract class TestCase extends BaseTestCase
{
use CreatesApplication;
}
対象テスト
/**
* @dataProvider 使用するメソッド
*/
public function test複数パターンテスト($テストで使用する値1, $テストで使用する値2)
{
// テストコードを記載
$this->assertEquals($期待値1, $テストで使用する値1, "test failed 1");
$this->assertEquals($期待値2, $テストで使用する値2, "test failed 2");
}
public function 使用するメソッド() : array
{
return [
'test1' => [1, 2],
'test2' => [2, 3],
'test3' => [3, 4],
];
// 上記配列のキーは任意
// テストケースを分かりやすくするためにつけることは推奨
}
上記のようにドキュメントコメントに、
dataProviderアノテーションを付与し、
その次に使用したい配列のメソッドを指定する。
すると、指定した配列のメソッドの値が、テストケースの引数に左から順に入り、
その値でテストを回すことができる。
上記例では、1度目のテストで、
$テストで使用する値1 に 1
$テストで使用する値2 に 2
が入る。
関連記事
Unitテスト作成コマンド
Discussion