From time to time I need to check so that a function correctly logs error messages to the application log. Here is one solution using Logback in a Spring application
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.core.Appender;
import org.mockito.ArgumentMatcher;
import org.slf4j.LoggerFactory;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
@Test
public void shouldWriteErrorMessageToLog() {
Logger l = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
Appender mockAppender = mock(Appender.class);
l.addAppender(mockAppender);
/*
* Call function that is expected to write to the application log
*/
verify(mockAppender).doAppend(argThat(new ArgumentMatcher() {
@Override
public boolean matches(final Object argument) {
return ((LoggingEvent)argument).getMessage().contains("FooBar");
}
}));
}
Tested with Spring Boot v2.2.4 and TestNG v6.11
Comments are closed.