2

そのため、テストにはPHPUnitを使用しています。私のテストの1つでDataProviderを使用しようとしています。

/**
 * Tests Events_Event->Events_Event()
 * @dataProvider provider
 */
public function testEvents_Event($Name, $param, $time) {
        //$this->assertInstanceOf("Events_Event", $this->Events_Event->Events_Event("test2", array()));
        $this->assertTrue(true);
    }

public static function provider()
    {
        return array(
            array("test", array("Like a boss"), "Cheack the time"),
            array("test2", array("Like a boss"), "9:00"),
            array("test3", array("Time to go home"), "4:00"),
            array("test3", array("Time to go home"), "4:00")
            );
    }

結果:

testEvents_Event with data set#0
testEvents_Event with data set#1
testEvents_Event with data set#2
testEvents_Event with data set#3: The test case was unexpectedly terminated

これは、最後のデータセットがいくつあるか、最後のデータセットが有効かどうかに関係なく、最後のデータセットで発生します。ご覧のとおり、テストを単純化したものの、$this->assertTrue(true)それでもエラーが発生します。

データプロバイダーを機能させるには何をする必要がありますか?

Zend Studio 9.0.3内でPHPUnitを使用していることが重要な場合は、更新を確認しましたが、すべてが最新であることがわかります。

4

2 に答える 2

1

私は通り抜けていました

....

時間:0秒、メモリ:12.75Mb

OK(4つのテスト、0のアサーション)

/**
 * Tests Events_Event->Events_Event()
 * @dataProvider provider
 */
public function testEvents_Event($Name, $param, $time)
{

}

public static function provider()
{
    return array(
        array("test", array("Like a boss"), "Cheack the time"),
        array("test2", array("Like a boss"), "9:00"),
        array("test3", array("Time to go home"), "4:00"),
        array("test3", array("Time to go home"), "4:00")
        );
}

どのようにテストを実行しますか?他に依存関係はありませんか?IDEを介して実行されているテスト?

于 2012-05-19T06:58:29.827 に答える
1

PHPUnit は、各データ プロバイダー メソッドのテスト ケースをインスタンス化します。PHPの魔法により、静的なデータ プロバイダー メソッドを使用することはできますが、インスタンスを使用して呼び出されるため、静的ではない必要があります。

テスト ケースにコンストラクターがある場合、3 つのパラメーターを受け入れ ( のソースを参照PHPUnit_Framework_TestCase)、それらを親コンストラクターに渡す必要があります。それらの 1 つは、その特定のテストのプロバイダーからのデータです。

しかし、これらが問題であるとは思えません。私のお金は ZendStudio にあり、Gordon が提案したように PHPUnit からの出力を解析する方法です。このテスト ケースをコマンド ラインから実行すると、同じ問題が発生しますか?

于 2012-05-20T19:20:21.297 に答える