Java 로거를 활용하는 코드를 테스트할 때 예상되는 로그 항목이 생성되고 있는지 확인하는 것이 중요합니다. 일반적인 접근 방식 중 하나는 로그 이벤트를 캡처하기 위한 사용자 지정 로거 또는 처리기를 만드는 것입니다. 그러나 기존 로깅 구성 요소를 활용하는 더 편리한 솔루션이 있습니다.
JUnit 테스트에서 로그 메시지를 확인하려면 로그를 가로채서 저장하는 사용자 정의 Log4j Appender를 생성할 수 있습니다. 이벤트. 샘플 구현은 다음과 같습니다.
<code class="java">import org.apache.log4j.AppenderSkeleton; import org.apache.log4j.Level; import org.apache.log4j.spi.LoggingEvent; import java.util.ArrayList; import java.util.List; public class TestAppender extends AppenderSkeleton { private final List<LoggingEvent> log = new ArrayList<>(); @Override public boolean requiresLayout() { return false; } @Override protected void append(LoggingEvent loggingEvent) { log.add(loggingEvent); } @Override public void close() {} public List<LoggingEvent> getLog() { return new ArrayList<>(log); } }</code>
JUnit 테스트에서 사용자 정의 Appender를 사용하려면 다음 단계를 따르세요.
예는 다음과 같습니다.
<code class="java">@Test public void test() { TestAppender appender = new TestAppender(); Logger logger = Logger.getRootLogger(); logger.addAppender(appender); try { // Execute code that calls the logger. Logger.getLogger(MyTest.class).info("Test"); } finally { logger.removeAppender(appender); } List<LoggingEvent> log = appender.getLog(); LoggingEvent firstLogEntry = log.get(0); assertThat(firstLogEntry.getLevel(), is(Level.INFO)); assertThat((String) firstLogEntry.getMessage(), is("Test")); assertThat(firstLogEntry.getLoggerName(), is("MyTest")); }</code>
위 내용은 Custom Appender를 사용하여 JUnit 테스트에서 로그 메시지를 어설션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!