PHPUnitのテストメソッドに任意の引数を渡すことができる。
確認に使用したバージョン
PHP:5.6.28
PHPUnit:5.7.0
渡す時は、@dataProviderアノテーションを使う。
このメソッドをデータプロバイダメソッドと呼ぶ。
データプロバイダメソッドを使った、任意の引数を渡すコードは以下の様になる。
use PHPUnit\Framework\TestCase;
class learnTest extends Testcase
{
/**
* @dataProvider dataProvider
*/
public function testAdd($expected, $a, $b)
{
$this->assertEquals($expected, $a + $b);
}
public function dataProvider()
{
return [
'adding zeros' => [0, 0, 0],
'zero plus one' => [1, 0, 1],
'one plus zero' => [1, 1, 0],
'one plus one' => [2, 1, 1]
];
}
}
testAdd()メソッドに@dataProviderアノテーションを書く。
これにより、dataProvider()から引数を受け取ることができる。
dataProvider()のデータを連想配列にしているのは、エラーが起きたときに、
どのテストデータでエラーが起きたのか表示するのに使うため。
試しに、one plus zeroの$expectedの部分を9に変更して実行する。
すると、以下のメッセージが出力される。
1) learnTest::testAdd with data set "one plus zero" (9, 1, 0)
Failed asserting that 1 matches expected 9.

コメント