LoginSignup
1
1

More than 3 years have passed since last update.

Javaの単体テスト時にログ出力の内容を検査する(モック未使用)

Last updated at Posted at 2019-05-22

概要

単体テスト時にログ出力の内容を検査する(モック未使用)

環境

  • Java
  • slf4j 1.7.26
  • logback 1.2.3

方法説明

詳細な方法は サンプルコード を参照。

理屈としては、

  • テスト開始時にルートロガーに新しくAppenderを追加する
  • この時、追加するAppenderdoAppend()overrideし、引数として受け取るILoggingEventを外部スコープのListにadd()していく
  • テストしたい機能が終了した後、Listに入っているILoggingEventを検査する
  • 追加したAppenderをルートロガーからデタッチする

という流れ。

ルートロガーにAppenderを追加しっぱなしでデタッチしないと、以降のテスト全てのロギングを保持することになるので注意。

余談

ルートロガーに追加する前提で書いているが、ロガーを細かく指定して(getLogger("jp.co.hoge")みたいな)、そこにAppenderを追加すればその部分だけログをとることも可能。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1