import org.apache.log4j.Logger; public class ClassWithLog4JLogger { private static final Logger logger = Logger.getLogger(ClassWithLog4JLogger.class); public void doSomethingWithInt(int i){ logger.info(" - doSomethingWithInt i = " +i); if (i>0){ logger.info(" - i "); }else{ logger.info(" - i "); } } }
new ClassWithLog4JLogger().doSomethingWithInt(1);
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> <version>1.10.19</version> <scope>test</scope> </dependency>
import org.apache.log4j.Appender; import org.apache.log4j.Logger; import org.apache.log4j.spi.LoggingEvent; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @RunWith(MockitoJUnitRunner.class) // Mockito - public class ClassWithLog4JLoggerAppenderMockTest { @Mock Appender mockAppender; @Test public void doLoggingTest() { // Logger logger = Logger.getLogger(ClassWithLog4JLogger.class); // mock- logger.addAppender(mockAppender); // ClassWithLog4JLogger classWithLog4JLogger = new ClassWithLog4JLogger(); classWithLog4JLogger.doSomethingWithInt(1); // '' mock ArgumentCaptor<LoggingEvent> eventArgumentCaptor = ArgumentCaptor.forClass(LoggingEvent.class); //, verify(mockAppender, times(2)).doAppend(eventArgumentCaptor.capture()); // Assert.assertEquals(" - doSomethingWithInt i = 1", eventArgumentCaptor.getAllValues().get(0).getMessage()); Assert.assertEquals(" - i ", eventArgumentCaptor.getAllValues().get(1).getMessage()); // ( ) Assert.assertEquals(Level.INFO, eventArgumentCaptor.getAllValues().get(0).getLevel()); Assert.assertEquals(Level.INFO, eventArgumentCaptor.getAllValues().get(1).getLevel()); } }
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> </dependency>
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ClassWithSlf4JLogger { private static final Logger logger = LoggerFactory.getLogger(ClassWithSlf4JLogger.class); public void doSomethingWithInt(int i) { logger.info(" - doSomethingWithInt i = {}", i); if (i > 0) { logger.info(" - i "); } else { logger.info(" - i "); } } }
Logger logger = Logger.getLogger(ClassWithSlf4JLogger.class);
<dependency> <groupId>uk.org.lidalia</groupId> <artifactId>slf4j-test</artifactId> <version>1.2.0</version> <scope>test</scope> </dependency>
<build> <plugins> <plugin> <artifactId>maven-surefire-plugin</artifactId> <configuration> <classpathDependencyExcludes> <classpathDependencyExcludes>org.slf4j:slf4j-log4j12</classpathDependencyExcludes> </classpathDependencyExcludes> </configuration> </plugin> </plugins> </build>
import org.junit.After; import org.junit.Assert; import org.junit.Test; import uk.org.lidalia.slf4jtest.TestLogger; import uk.org.lidalia.slf4jtest.TestLoggerFactory; public class ClassWithSlf4JTestLoggerTest { // TestLogger logger = TestLoggerFactory.getTestLogger(ClassWithSlf4JLogger.class); @Test public void doLoggingTest() { ClassWithSlf4JLogger classWithSlf4JLogger = new ClassWithSlf4JLogger(); classWithSlf4JLogger.doSomethingWithInt(1); // Assert.assertEquals(" - doSomethingWithInt i = {}", logger.getLoggingEvents().asList().get(0).getMessage()); Assert.assertEquals(1, logger.getLoggingEvents().asList().get(0).getArguments().get(0)); Assert.assertEquals(" - i ", logger.getLoggingEvents().asList().get(1).getMessage()); Assert.assertEquals(2, logger.getLoggingEvents().asList().size()); } @After public void clearLoggers() { TestLoggerFactory.clear(); } }
<dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito</artifactId> <version>1.7.3</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>1.7.3</version> <scope>test</scope> </dependency>
import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InOrder; import org.mockito.Mockito; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.anyVararg; import static org.powermock.api.mockito.PowerMockito.mock; @RunWith(PowerMockRunner.class) // PowerMock LoggerFactory @PrepareForTest({LoggerFactory.class}) public class PowerMockitoLoggingTest { // private static Logger logger = mock(Logger.class);; // LoggerFactory.getLogger - static{ PowerMockito.spy(LoggerFactory.class); try { PowerMockito.doReturn(logger).when(LoggerFactory.class, "getLogger", any()); }catch (Exception e){ e.printStackTrace(); } } @Test public void doLoggingTest() { ClassWithSlf4JLogger classWithSlf4JLogger = new ClassWithSlf4JLogger(); classWithSlf4JLogger.doSomethingWithInt(1); // . // - , InOrder inOrd = Mockito.inOrder(logger); inOrd.verify(logger).info(" - doSomethingWithInt i = {}",1); inOrd.verify(logger).info(" - i "); Mockito.verify(logger, Mockito.times(1)).info(anyString()); Mockito.verify(logger, Mockito.times(1)).info(anyString(), anyVararg()); }
Source: https://habr.com/ru/post/344876/
All Articles