LoginSignup
38
39

More than 5 years have passed since last update.

Log4jのログ出力内容をJUnitでテストする方法

Posted at

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>
38
39
1

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
38
39