0
0

(調査中)logback。java。JUnitでテストコードで、ログレベル変更

Posted at

JUnitテストコードでLogbackのログレベルを変更することは可能です。Logbackの設定をプログラム内で変更することで、特定のテストケース内でログレベルを調整できます。以下は、その方法を示すサンプルコードです。

1. Logbackの依存関係を追加

まず、Mavenプロジェクトの場合は、pom.xmlにLogbackの依存関係を追加します。

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
    <scope>test</scope>
</dependency>

2. テストコードでログレベルを変更

次に、JUnitテストコード内でLogbackのログレベルを変更する方法を示します。

import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.Appender;
import ch.qos.logback.core.read.ListAppender;

public class LogbackTest {

    private static final Logger logger = LoggerFactory.getLogger(LogbackTest.class);

    @Test
    public void testLogLevelChange() {
        // LoggerContextの取得
        LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
        
        // ルートロガーの取得
        ch.qos.logback.classic.Logger rootLogger = loggerContext.getLogger("ROOT");
        
        // ルートロガーのログレベルを変更
        rootLogger.setLevel(Level.DEBUG);

        // ListAppenderを追加してログをキャプチャする
        ListAppender<ILoggingEvent> listAppender = new ListAppender<>();
        listAppender.start();
        rootLogger.addAppender((Appender<ILoggingEvent>) listAppender);

        // テスト対象のコード
        logger.info("This is an info log message");
        logger.debug("This is a debug log message");

        // ログメッセージの検証
        assertEquals(2, listAppender.list.size());
        assertTrue(listAppender.list.get(0).getFormattedMessage().contains("This is an info log message"));
        assertTrue(listAppender.list.get(1).getFormattedMessage().contains("This is a debug log message"));
    }
}

動作確認結果

(編集中)

解説

LoggerContextの取得

LoggerContextを取得し、Logbackの設定を操作できるようにします。

ルートロガーの取得

loggerContext.getLogger("ROOT")を使用してルートロガーを取得します。
ログレベルの設定: rootLogger.setLevel(Level.DEBUG)でログレベルを変更します。この例ではDEBUGレベルに設定しています。

ListAppenderの設定

ListAppenderを使用してログメッセージをキャプチャし、後で検証できるようにします。

ログメッセージの検証

assertEqualsやassertTrueを使用して、ログメッセージが期待通りに出力されていることを確認します。
この方法を使うことで、テストケースごとにLogbackのログレベルを自由に変更し、ログ出力を検証することができます。

0
0
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
0
0