単体テストでのログの出力内容の検証方法

  •  
 
yokoe2021年6月18日 - 09:48 に投稿

タグ

概要

今回は単体テスト時にログの出力内容を検証をすることになったため、ログの出力内容の検証の方法で調べたことをサンプルと合わせてあげたいと思います。

出力されたログの検証方法

出力されたログを検証する際、検証前に以下のサンプルのように値を設定する。

/**
 * Appenderのモック.
 */
private Appender<ILoggingEvent> mockAppender;

/**
 * キャプチャー.
 */
@Captor
private ArgumentCaptor<ILoggingEvent> captorLoggingEvent;

/**
  * 事前設定
  */
@Before
public void setUp() {

    mockAppender = mock(Appender.class);
    Logger logger = (Logger) LoggerFactory.getLogger(XXX.class);<!-- 1 -->
    logger.addAppender(mockAppender);<!-- 2 -->

    captorLoggingEvent = ArgumentCaptor.forClass(ILoggingEvent.class);

}

1.getLoggerの引数にログを出力するテスト対象のクラスを指定する。
2.Loggerへmockを追加する。

テスト対象の試験を実施後出力されたログの検証するため以下のように検証を行う。

verify(mockAppender, times(1)).doAppend(captorLoggingEvent.capture());<!-- 1 -->
String logMessage = captorLoggingEvent.getValue().toString();<!-- 2 -->
assertThat(logMessage).isEqualTo("output message");<!-- 3 -->

1.verifyメソッドでログが何回出力されたかを検証することができる。またキャプチャーで引数をキャプチャする。
2.(1)でキャプチャした引数をgetValueでキャプチャーから取り出す。
3.(2)でキャプチャーから取り出したログの出力内容を検証する。

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
CAPTCHA
この質問はあなたが人間の訪問者であるかどうかをテストし、自動化されたスパム送信を防ぐためのものです。