0

phpunit のカスタム テスト リスナーに取り組んでいますが、終了後にテストのステータスを取得できません。終了後にテストで getStatus() を呼び出すと、ステータスではなく null が返されます。1 つが成功し、1 つが不完全で、もう 1 つが失敗するいくつかのテストでこれを試してみましたが、getStatus() はそれらすべてに対して null を返します。

PHPUnit バージョン 3.7.10 を使用しています

これが私のテストリスナーコードです:

class MyTestListener implements PHPUnit_Framework_TestListener
{
    protected $tests = array();

    public function addError(PHPUnit_Framework_Test $test, Exception $e, $time) {}
    public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time) {}
    public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time) {}
    public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time) {}
    public function startTest(PHPUnit_Framework_Test $test) {}
    public function endTest(PHPUnit_Framework_Test $test, $time) {
        $this->tests[] = array('test'=>$test, 'time'=>$time);
            $status = $test->getStatus();
            //NOTE: $status is null
    }
    public function startTestSuite(PHPUnit_Framework_TestSuite $suite) {}
    public function endTestSuite(PHPUnit_Framework_TestSuite $suite) {}

    public function __destruct() {
        foreach($this->tests as $d) {
            $test = $d['test'];
            $time = $d['time'];

            $testClass = get_class($test);

            $status = $test->getStatus();
            //NOTE: $status is null here
            if($status == PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE) {
                $status = "fail - ";
            } else if($status == PHPUnit_Runner_BaseTestRunner::STATUS_SKIPPED) {
                $status = "skip - ";
            } else if($status == PHPUnit_Runner_BaseTestRunner::STATUS_INCOMPLETE) {
                $status = "inc  - ";
            } else if($status == PHPUnit_Runner_BaseTestRunner::STATUS_ERROR) {
                $status = "err  - ";
            } else {
                $status = $status."ok  - ";
            }

            print $status.$testClass."::".$test->getName()."  ".round($time,1)." seconds\n";

        }
    }
}

誰が私が間違っているのかについて何か考えがありますか?

4

1 に答える 1

2

インターフェイスにはメソッドPHPUnit_Framework_TestさえないgetStatus()ため、さらに問題が発生する可能性があります。メソッドで結果をより適切にキャプチャしadd*()ます。

を見てくださいPHPUnit/TextUI/ResultPrinter.php、それはこのようにします。

于 2013-01-03T22:35:53.997 に答える