所有的斷言都是從PHPUnit_Framework_Assert
的靜態方法,不能被TestCase
的子類覆蓋。不過,您可以使用修改後的消息來定義自己的調用原始聲明。
public static function assertTrue($value, $message='') {
PHPUnit_Framework_Assert::assertTrue($value, $message . myLog::GetErrors());
}
所有失敗的測試呼叫onNotSuccessfulTest()
,唯一的例外是例外。您可以重寫此方法,並在某些情況下將您的日誌錯誤添加到異常的消息。除了包含在異常中的錯誤消息之外,一些PHPUnit異常還提供了第二個說明。
public function onNotSuccessfulTest(Exception $e) {
if ($e instanceof PHPUnit_Framework_ExpectationFailedException) {
$e->setCustomMessage(implode(PHP_EOL,
array($e->getCustomMessage(), myLog::GetErrors())));
}
parent::onNotSuccessfulTest($e);
}
更新:作爲格雷戈裏羅在下面評論指出,setCustomMessage()
和getCustomMessage()
PHPUnit中3.6被拆除。 :(
感謝我決定去看看你的第二個建議,看看我不想重寫每個斷言。 – phoolish
你從哪裏得到這些getCustomMessage和setCustomMessage方法?PHPUnit_Framework_ExpectationFailedException中沒有這樣的方法 – Soid
@GregoryLo可悲的是,他們在3.6版本中被刪除,因爲我無法辨別。 –