LoginSignup
15
23

More than 5 years have passed since last update.

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

Last updated at Posted at 2012-11-08

Logbackのログ出力内容をJUnitとMockitoでテストする書き方になります。

    @Test
    public void test() {
        ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(ch.qos.logback.classic.Logger.ROOT_LOGGER_NAME);
        @SuppressWarnings("unchecked")
        final Appender<ILoggingEvent> mockAppender = mock(Appender.class);
        when(mockAppender.getName()).thenReturn("MOCK");
        root.addAppender(mockAppender);

        // 何かしらのログを出力する処理

        verify(mockAppender).doAppend(argThat(new ArgumentMatcher<LoggingEvent>() {
            @Override
            public boolean matches(Object argument) {
                return ((LoggingEvent)argument).getFormattedMessage().contains("initOption() fail perse.");
            }
        }));
    }

以上のようなテストメソッドを書くことで、ログに"initOption() fail perse."を含む
メッセージが出力されたかどうかをテストできます。

ちなみに利用したJUnitとMockitoのバージョンを表すMavenのpom.xml以下の通り。

    <dependencies>
        <!-- JUNIT DEPENDENCY FOR TESTING -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
            <scope>test</scope>
        </dependency>
        <!-- Mockito for support of mocking in test -->
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>1.9.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
15
23
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
15
23