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
01 | import ch.qos.logback.classic.Logger; |
02 | import ch.qos.logback.classic.spi.LoggingEvent; |
03 | import ch.qos.logback.core.Appender; |
04 |
05 | import org.mockito.ArgumentMatcher; |
06 |
07 | import org.slf4j.LoggerFactory; |
08 |
09 | import static org.mockito.Mockito.mock; |
10 | import static org.mockito.Mockito.verify; |
11 |
12 | @Test |
13 | public void shouldWriteErrorMessageToLog() { |
14 | Logger l = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); |
15 | Appender mockAppender = mock(Appender. class ); |
16 | l.addAppender(mockAppender); |
17 |
18 | /* |
19 | * Call function that is expected to write to the application log |
20 | */ |
21 |
22 | verify(mockAppender).doAppend(argThat( new ArgumentMatcher() { |
23 | @Override |
24 | public boolean matches( final Object argument) { |
25 | return ((LoggingEvent)argument).getMessage().contains( "FooBar" ); |
26 | } |
27 | })); |
28 | } |
Tested with Spring Boot v2.2.4 and TestNG v6.11
Comments are closed.