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";
}
}
}
誰が私が間違っているのかについて何か考えがありますか?