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.
コメント