2017-01-23 3 views
0

私のアプリケーションコードでは、スタックトレースとすべてでExceptionを完全に出力したいという状況があります。Logback/SLF4J - スタックトレースが印刷されないようにする設定がありますか?

私は故意にdoThrow()この例外の処理をテストするために、私はまだエラーにログを残すが、スタックトレースなしで、部分的にログを乱雑にするのを防ぐために、部分的にスタックトレースをプリントする時間を無駄にするコードをテストする必要はありません。

logback-test.xmlでこれを行う方法はありますか?

答えて

0

まあ、私は回避策を見つけました...しかし、それはTDDの純粋さのためではありません。テスト中の私のアプリのクラスで

(それは実際にいくつかのユーティリティクラス可能性があり、その後、任意のアプリクラスに使用される)私は、この置く:私はこれからLOGGERラインを変更し、アプリケーションクラスに再び

private boolean printErrorStackTrace = true; 
void setPrintErrorStackTrace(boolean doPrint){ 
    printErrorStackTrace = doPrint; 
} 

LOGGER.error(String.format("file was %s", documentFile), 
       printErrorStackTrace? e : null); 

そして、私の試験方法で、私はこれを置く:これに

LOGGER.error(String.format("file was %s", documentFile), e); 

appClass.setPrintErrorStackTrace(false); 

...明らかに私たちは、テストコードは、アプリのコードに到達できるようにすることではない言われている...しかし、もちろん、私は代わりに条件節に方法getPrintErrorStackTrace()を使うかもしれない...そしてことを嘲笑メソッドをテストコードに追加します。しかし、それはそれほど異端的ではないだろうか?また、テストを支援する機能を追加しないように指示されています。

私のログは今よりきれいに見えます...

関連する問題