PHPUnitのテストメソッドに任意の引数を渡す。

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.

コメント

タイトルとURLをコピーしました