[java] Mockito를 사용하여 로그 출력을 검증하는 방법은?

Mockito는 자바에서 테스트를 위한 모의 객체를 생성하고 사용하는데 도움을 주는 인기있는 라이브러리입니다. Mockito를 사용하여 로그 출력을 검증하는 방법을 알아보겠습니다.

먼저, 로그 출력을 검증하려는 메소드가 있는 클래스에 대해 테스트를 작성해야 합니다. 이 예제에서는 LoggerUtil 클래스를 가정하겠습니다.

public class LoggerUtil {
    private Logger logger;

    public LoggerUtil(Logger logger) {
        this.logger = logger;
    }

    public void log(String message) {
        logger.info(message);
    }
}

다음으로, Mockito를 사용하여 로그 출력을 검증하는 테스트 코드를 작성해보겠습니다.

import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;

import java.util.logging.Level;
import java.util.logging.Logger;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.*;

public class LoggerUtilTest {
    @Test
    public void testLog() {
        Logger loggerMock = mock(Logger.class);
        LoggerUtil loggerUtil = new LoggerUtil(loggerMock);

        String message = "Test message";
        loggerUtil.log(message);

        ArgumentCaptor<String> argumentCaptor = ArgumentCaptor.forClass(String.class);
        verify(loggerMock).info(argumentCaptor.capture());

        String capturedMessage = argumentCaptor.getValue();
        assertEquals(message, capturedMessage);
    }
}

위의 테스트 코드에서는 LoggerUtil 클래스의 log 메소드를 호출하고, Mockito의 verify 메소드를 사용하여 loggerMock 객체의 info 메소드가 호출되었는지 검증합니다. ArgumentCaptor를 사용하여 호출된 메시지를 캡처하고, 이후에 원하는 값과 일치하는지 확인합니다.

이렇게하면 Mockito를 사용하여 로그 출력을 검증할 수 있습니다. Mockito를 사용하면 모의 객체를 생성하고 메소드 호출 및 반환 값을 제어할 수 있으므로 테스트 작성이 간단하고 효율적입니다.

더 자세한 내용은 Mockito의 공식 문서를 참조하시기 바랍니다.

참고: Mockito 공식 문서 - https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html