Log4jのログ出力内容をJUnitでテストする書き方になります。
@Test
public void test() {
StringWriter writer = new StringWriter();
WriterAppender appender = new WriterAppender(new PatternLayout("%p, %m%n"),writer);
LogManager.getRootLogger().addAppender(appender);
LogManager.getRootLogger().setAdditivity(false);
try{
// 何かしらのログを出力する処理
// エラーログのテスト
String logString = writer.toString();
assertThat(logString, containsString("initOption() fail perse."));
}finally{
// ログアペンダを消す
LogManager.getRootLogger().removeAppender(appender);
LogManager.getRootLogger().setAdditivity(true);
}
}
以上のようなテストメソッドを書くことで、ログに"initOption() fail perse."を含む
メッセージが出力されたかどうかをテストできます。
ちなみに利用したJUnitのバージョンを表すMavenのpom.xml以下の通り。
<dependencies>
<!-- JUNIT DEPENDENCY FOR TESTING -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>