2011-07-31 31 views
2

すべてのテストメッセージにログ出力を追加します。phpunitエラーメッセージを拡大する

$this->assertTrue(FALSE, "This assertion is False.". myLog::GetErrors()); 

私は私の追加メッセージとPHPUnit_Framework_TestCaseを:: assertThat機能を拡張しようとしたが、それに影響を与えていないようです。 PHPUnit_Framework_TestCaseが拡張されているのは、テスト用にいくつかのヘルパー関数(ランダムな文字列生成)があるためです。

他の考えはありますか?それは顧客リスナーですか?

答えて

2

アサーションのすべては、PHPUnit_Framework_Assertの静的メソッドであり、TestCaseのサブクラスで上書きすることはできません。ただし、修正されたメッセージでオリジナルを呼び出す独自のアサーションを定義することはできます。

public static function assertTrue($value, $message='') { 
    PHPUnit_Framework_Assert::assertTrue($value, $message . myLog::GetErrors()); 
} 

すべてのテストが唯一のパラメータとして例外でonNotSuccessfulTest()を呼び出しに失敗しました。このメソッドをオーバーライドし、場合によってはログエラーを例外のメッセージに追加することができます。 PHPUnitの例外の中には、例外に含まれるエラーメッセージに加えて2番目の記述があります。

public function onNotSuccessfulTest(Exception $e) { 
    if ($e instanceof PHPUnit_Framework_ExpectationFailedException) { 
     $e->setCustomMessage(implode(PHP_EOL, 
       array($e->getCustomMessage(), myLog::GetErrors()))); 
    } 
    parent::onNotSuccessfulTest($e); 
} 

更新:グレゴリーLoは以下のコメントで述べたようにsetCustomMessage()getCustomMessage()はPHPUnitの3.6で除去しました。 。。:(それはもう必要ありません最近のPHPUnitのバージョンで

+0

私が決めたおかげ。 – phoolish

+0

getCustomMessageメソッドとsetCustomMessageメソッドはどこで手に入りましたか?PHPUnit_Framework_ExpectationFailedExceptionにはこのようなメソッドはありません – Soid

+0

@ GregoryLo悲しいことに、彼らは私が見分けることができない理由で3.6リリースで削除されました。 –

0

あなたは$this->assertXXXX()でエラーパラメータを指定すると、それはPHPUnitの元のメッセージをpreceeds

スクリーンショット:

enter image description here