概要
単体テスト時にログ出力の内容を検査する(モック未使用)
環境
- Java
- slf4j 1.7.26
- logback 1.2.3
方法説明
詳細な方法は サンプルコード を参照。
理屈としては、
- テスト開始時にルートロガーに新しく
Appenderを追加する - この時、追加する
AppenderのdoAppend()をoverrideし、引数として受け取るILoggingEventを外部スコープのListにadd()していく - テストしたい機能が終了した後、Listに入っている
ILoggingEventを検査する - 追加した
Appenderをルートロガーからデタッチする
という流れ。
ルートロガーにAppenderを追加しっぱなしでデタッチしないと、以降のテスト全てのロギングを保持することになるので注意。
余談
ルートロガーに追加する前提で書いているが、ロガーを細かく指定して(getLogger("jp.co.hoge")みたいな)、そこにAppenderを追加すればその部分だけログをとることも可能。