Migrate unit tests to Mockito 2.x This commit completely migrates from EasyMock to Mockito 2.x. Unit tests have been updated to use the BDD-style of Mockito's API (given/when/then). Various test cleanups were also included during the migration.
Related to LOG4J2-1646. Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/78c6a1fc Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/78c6a1fc Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/78c6a1fc Branch: refs/heads/master Commit: 78c6a1fcae718f5edd177256ab157f555b84f37a Parents: f3e9ea1 Author: Matt Sicker <[email protected]> Authored: Sun Oct 23 15:09:35 2016 -0500 Committer: Matt Sicker <[email protected]> Committed: Sun Oct 23 15:12:03 2016 -0500 ---------------------------------------------------------------------- log4j-core/pom.xml | 4 +- .../core/appender/ConsoleAppenderTest.java | 27 +- .../db/AbstractDatabaseAppenderTest.java | 145 +++---- .../db/AbstractDatabaseManagerTest.java | 356 +++++++-------- .../db/jdbc/AbstractJdbcAppenderTest.java | 20 +- .../db/jdbc/DataSourceConnectionSourceTest.java | 17 +- .../jdbc/FactoryMethodConnectionSourceTest.java | 53 +-- .../log4j/core/lookup/Log4jLookupTest.java | 33 +- .../core/lookup/Log4jLookupWithSpacesTest.java | 35 +- log4j-iostreams/pom.xml | 4 +- .../io/AbstractLoggerOutputStreamTest.java | 15 +- .../log4j/io/AbstractLoggerWriterTest.java | 15 +- log4j-nosql/pom.xml | 5 +- .../log4j/nosql/appender/NoSqlAppenderTest.java | 30 +- .../appender/NoSqlDatabaseManagerTest.java | 434 ++++++------------- log4j-web/pom.xml | 4 +- .../Log4jServletContainerInitializerTest.java | 164 +++---- .../web/Log4jServletContextListenerTest.java | 58 +-- .../log4j/web/Log4jServletFilterTest.java | 114 ++--- .../log4j/web/Log4jWebInitializerImplTest.java | 367 ++++------------ pom.xml | 7 +- src/changes/changes.xml | 3 + 22 files changed, 658 insertions(+), 1252 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/78c6a1fc/log4j-core/pom.xml ---------------------------------------------------------------------- diff --git a/log4j-core/pom.xml b/log4j-core/pom.xml index 2fbc78c..5cda105 100644 --- a/log4j-core/pom.xml +++ b/log4j-core/pom.xml @@ -203,8 +203,8 @@ </dependency> <!-- Mocking framework for use with JUnit --> <dependency> - <groupId>org.easymock</groupId> - <artifactId>easymock</artifactId> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> <scope>test</scope> </dependency> <!-- Embedded JDBC drivers for database appender tests --> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/78c6a1fc/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java index 87aef83..c53eb43 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java @@ -27,22 +27,25 @@ import org.apache.logging.log4j.core.impl.Log4jLogEvent; import org.apache.logging.log4j.core.layout.PatternLayout; import org.apache.logging.log4j.message.SimpleMessage; import org.apache.logging.log4j.util.Strings; -import org.easymock.EasyMockSupport; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; -import static org.easymock.EasyMock.anyInt; -import static org.easymock.EasyMock.anyObject; -import static org.easymock.EasyMock.expectLastCall; import static org.junit.Assert.*; - +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.BDDMockito.then; +import static org.mockito.Mockito.atLeastOnce; /** * */ +@RunWith(MockitoJUnitRunner.class) public class ConsoleAppenderTest { private static final String LOG4J_SKIP_JANSI = "log4j.skipJansi"; @@ -59,15 +62,12 @@ public class ConsoleAppenderTest { ByteArrayOutputStream baos; - EasyMockSupport mocks; - + @Mock PrintStream psMock; @Before public void before() { System.setProperty(LOG4J_SKIP_JANSI, "true"); - mocks = new EasyMockSupport(); - psMock = mocks.createMock("psMock", PrintStream.class); baos = new ByteArrayOutputStream(); } @@ -90,12 +90,6 @@ public class ConsoleAppenderTest { private void testConsoleStreamManagerDoesNotClose(final PrintStream ps, final Target targetName, final SystemSetter systemSetter) { try { - psMock.write((byte[]) anyObject(), anyInt(), anyInt()); - expectLastCall().anyTimes(); - psMock.flush(); - expectLastCall().anyTimes(); - - mocks.replayAll(); systemSetter.systemSet(psMock); final Layout<String> layout = PatternLayout.newBuilder().withAlwaysWriteExceptions(true).build(); final ConsoleAppender app = ConsoleAppender.newBuilder().withLayout(layout).setTarget(targetName) @@ -116,7 +110,8 @@ public class ConsoleAppenderTest { } finally { systemSetter.systemSet(ps); } - mocks.verifyAll(); + then(psMock).should(atLeastOnce()).write(any(byte[].class), anyInt(), anyInt()); + then(psMock).should(atLeastOnce()).flush(); } @Test http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/78c6a1fc/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppenderTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppenderTest.java index 276930c..cf33cea 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppenderTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseAppenderTest.java @@ -16,138 +16,94 @@ */ package org.apache.logging.log4j.core.appender.db; +import java.util.concurrent.TimeUnit; + import org.apache.logging.log4j.core.Filter; import org.apache.logging.log4j.core.LogEvent; -import org.junit.After; import org.junit.Test; - -import static org.easymock.EasyMock.*; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; import static org.junit.Assert.*; +import static org.mockito.ArgumentMatchers.same; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.then; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.reset; +@RunWith(MockitoJUnitRunner.class) public class AbstractDatabaseAppenderTest { private LocalAbstractDatabaseAppender appender; + @Mock private LocalAbstractDatabaseManager manager; public void setUp(final String name) { - this.manager = createMockBuilder(LocalAbstractDatabaseManager.class) - .withConstructor(String.class, int.class) - .withArgs(name, 0) - .addMockedMethod("close") - .createStrictMock(); - - this.appender = createMockBuilder(LocalAbstractDatabaseAppender.class) - .withConstructor(String.class, Filter.class, boolean.class, LocalAbstractDatabaseManager.class) - .withArgs(name, null, true, this.manager) - .createStrictMock(); - } - - @After - public void tearDown() { - verify(this.manager, this.appender); + appender = new LocalAbstractDatabaseAppender(name, null, true, manager); } @Test public void testNameAndGetLayout01() { - this.setUp("testName01"); + setUp("testName01"); - replay(this.manager, this.appender); - - assertEquals("The name is not correct.", "testName01", this.appender.getName()); - assertNull("The layout should always be null.", this.appender.getLayout()); + assertEquals("The name is not correct.", "testName01", appender.getName()); + assertNull("The layout should always be null.", appender.getLayout()); } @Test public void testNameAndGetLayout02() { - this.setUp("anotherName02"); - - replay(this.manager, this.appender); + setUp("anotherName02"); - assertEquals("The name is not correct.", "anotherName02", this.appender.getName()); - assertNull("The layout should always be null.", this.appender.getLayout()); + assertEquals("The name is not correct.", "anotherName02", appender.getName()); + assertNull("The layout should always be null.", appender.getLayout()); } @Test public void testStartAndStop() throws Exception { - this.setUp("name"); - - this.manager.startupInternal(); - expectLastCall(); - replay(this.manager, this.appender); - - this.appender.start(); + setUp("name"); - verify(this.manager, this.appender); - reset(this.manager, this.appender); - this.manager.shutdownInternal(); - expectLastCall().andReturn(Boolean.TRUE); - replay(this.manager, this.appender); + appender.start(); + then(manager).should().startupInternal(); - this.appender.stop(); + appender.stop(); + then(manager).should().stop(0L, TimeUnit.MILLISECONDS); } @Test public void testReplaceManager() throws Exception { - this.setUp("name"); + setUp("name"); - replay(this.manager, this.appender); + final LocalAbstractDatabaseManager oldManager = appender.getManager(); + assertSame("The manager should be the same.", manager, oldManager); - final LocalAbstractDatabaseManager manager = this.appender.getManager(); + final LocalAbstractDatabaseManager newManager = mock(LocalAbstractDatabaseManager.class); + appender.replaceManager(newManager); + then(manager).should().close(); + then(newManager).should().startupInternal(); - assertSame("The manager should be the same.", this.manager, manager); + appender.stop(); + then(newManager).should().stop(0L, TimeUnit.MILLISECONDS); + } - verify(this.manager, this.appender); - reset(this.manager, this.appender); - this.manager.close(); - expectLastCall(); - final LocalAbstractDatabaseManager newManager = createMockBuilder(LocalAbstractDatabaseManager.class) - .withConstructor(String.class, int.class).withArgs("name", 0).addMockedMethod("close") - .createStrictMock(); - newManager.startupInternal(); - expectLastCall(); - replay(this.manager, this.appender, newManager); + @Test + public void testAppend() { + setUp("name"); + given(manager.commitAndClose()).willReturn(true); - this.appender.replaceManager(newManager); + final LogEvent event1 = mock(LogEvent.class); + final LogEvent event2 = mock(LogEvent.class); - verify(this.manager, this.appender, newManager); - reset(this.manager, this.appender, newManager); - newManager.shutdownInternal(); - expectLastCall().andReturn(Boolean.TRUE); - replay(this.manager, this.appender, newManager); + appender.append(event1); + then(manager).should().connectAndStart(); + then(manager).should().writeInternal(same(event1)); + then(manager).should().commitAndClose(); - this.appender.stop(); + reset(manager); - verify(newManager); - } - - @Test - public void testAppend() { - this.setUp("name"); - - final LogEvent event1 = createStrictMock(LogEvent.class); - final LogEvent event2 = createStrictMock(LogEvent.class); - - this.manager.connectAndStart(); - expectLastCall(); - this.manager.writeInternal(same(event1)); - expectLastCall(); - this.manager.commitAndClose(); - expectLastCall().andReturn(Boolean.TRUE); - replay(this.manager, this.appender); - - this.appender.append(event1); - - verify(this.manager, this.appender); - reset(this.manager, this.appender); - this.manager.connectAndStart(); - expectLastCall(); - this.manager.writeInternal(same(event2)); - expectLastCall(); - this.manager.commitAndClose(); - expectLastCall().andReturn(Boolean.TRUE); - replay(this.manager, this.appender); - - this.appender.append(event2); + appender.append(event2); + then(manager).should().connectAndStart(); + then(manager).should().writeInternal(same(event2)); + then(manager).should().commitAndClose(); } private static abstract class LocalAbstractDatabaseManager extends AbstractDatabaseManager { @@ -156,8 +112,7 @@ public class AbstractDatabaseAppenderTest { } } - private static abstract class LocalAbstractDatabaseAppender extends - AbstractDatabaseAppender<LocalAbstractDatabaseManager> { + private static class LocalAbstractDatabaseAppender extends AbstractDatabaseAppender<LocalAbstractDatabaseManager> { public LocalAbstractDatabaseAppender(final String name, final Filter filter, final boolean exceptionSuppressed, final LocalAbstractDatabaseManager manager) { http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/78c6a1fc/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManagerTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManagerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManagerTest.java index 3a8ae8f..04d7699 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManagerTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/AbstractDatabaseManagerTest.java @@ -17,261 +17,201 @@ package org.apache.logging.log4j.core.appender.db; import org.apache.logging.log4j.core.LogEvent; -import org.junit.After; import org.junit.Test; -import static org.easymock.EasyMock.*; - import static org.junit.Assert.*; +import static org.mockito.ArgumentMatchers.same; +import static org.mockito.BDDMockito.then; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.spy; public class AbstractDatabaseManagerTest { private AbstractDatabaseManager manager; public void setUp(final String name, final int buffer) { - this.manager = createMockBuilder(AbstractDatabaseManager.class) - .withConstructor(String.class, int.class) - .withArgs(name, buffer) - .addMockedMethod("release") - .createStrictMock(); - } - - @After - public void tearDown() { - verify(this.manager); + manager = spy(new StubDatabaseManager(name, buffer)); } @Test public void testStartupShutdown01() throws Exception { - this.setUp("testName01", 0); - - replay(this.manager); - - assertEquals("The name is not correct.", "testName01", this.manager.getName()); - assertFalse("The manager should not have started.", this.manager.isRunning()); + setUp("testName01", 0); - verify(this.manager); - reset(this.manager); - this.manager.startupInternal(); - expectLastCall(); - replay(this.manager); + assertEquals("The name is not correct.", "testName01", manager.getName()); + assertFalse("The manager should not have started.", manager.isRunning()); - this.manager.startup(); - assertTrue("The manager should be running now.", this.manager.isRunning()); + manager.startup(); + then(manager).should().startupInternal(); + assertTrue("The manager should be running now.", manager.isRunning()); - verify(this.manager); - reset(this.manager); - this.manager.shutdownInternal(); - expectLastCall().andReturn(Boolean.TRUE); - replay(this.manager); - - this.manager.shutdown(); - assertFalse("The manager should not be running anymore.", this.manager.isRunning()); + manager.shutdown(); + then(manager).should().shutdownInternal(); + assertFalse("The manager should not be running anymore.", manager.isRunning()); } @Test public void testStartupShutdown02() throws Exception { - this.setUp("anotherName02", 0); - - replay(this.manager); - - assertEquals("The name is not correct.", "anotherName02", this.manager.getName()); - assertFalse("The manager should not have started.", this.manager.isRunning()); + setUp("anotherName02", 0); - verify(this.manager); - reset(this.manager); - this.manager.startupInternal(); - expectLastCall(); - replay(this.manager); + assertEquals("The name is not correct.", "anotherName02", manager.getName()); + assertFalse("The manager should not have started.", manager.isRunning()); - this.manager.startup(); - assertTrue("The manager should be running now.", this.manager.isRunning()); + manager.startup(); + then(manager).should().startupInternal(); + assertTrue("The manager should be running now.", manager.isRunning()); - verify(this.manager); - reset(this.manager); - this.manager.shutdownInternal(); - expectLastCall().andReturn(Boolean.TRUE); - replay(this.manager); - - this.manager.releaseSub(-1, null); - assertFalse("The manager should not be running anymore.", this.manager.isRunning()); + manager.releaseSub(-1, null); + then(manager).should().shutdownInternal(); + assertFalse("The manager should not be running anymore.", manager.isRunning()); } @Test public void testToString01() { - this.setUp("someName01", 0); - - replay(this.manager); + setUp("someName01", 0); - assertEquals("The string is not correct.", "someName01", this.manager.toString()); + assertEquals("The string is not correct.", "someName01", manager.toString()); } @Test public void testToString02() { - this.setUp("bufferSize=12, anotherKey02=coolValue02", 12); + setUp("bufferSize=12, anotherKey02=coolValue02", 12); - replay(this.manager); - - assertEquals("The string is not correct.", "bufferSize=12, anotherKey02=coolValue02", this.manager.toString()); + assertEquals("The string is not correct.", "bufferSize=12, anotherKey02=coolValue02", manager.toString()); } @Test public void testBuffering01() throws Exception { - this.setUp("name", 0); - - final LogEvent event1 = createStrictMock(LogEvent.class); - final LogEvent event2 = createStrictMock(LogEvent.class); - final LogEvent event3 = createStrictMock(LogEvent.class); - - this.manager.startupInternal(); - expectLastCall(); - replay(this.manager); - - this.manager.startup(); - - verify(this.manager); - reset(this.manager); - this.manager.connectAndStart(); - expectLastCall(); - this.manager.writeInternal(same(event1)); - expectLastCall(); - this.manager.commitAndClose(); - expectLastCall().andReturn(Boolean.TRUE); - replay(this.manager); - - this.manager.write(event1); - - verify(this.manager); - reset(this.manager); - this.manager.connectAndStart(); - expectLastCall(); - this.manager.writeInternal(same(event2)); - expectLastCall(); - this.manager.commitAndClose(); - expectLastCall().andReturn(Boolean.TRUE); - replay(this.manager); - - this.manager.write(event2); - - verify(this.manager); - reset(this.manager); - this.manager.connectAndStart(); - expectLastCall(); - this.manager.writeInternal(same(event3)); - expectLastCall(); - this.manager.commitAndClose(); - expectLastCall().andReturn(Boolean.TRUE); - replay(this.manager); - - this.manager.write(event3); + setUp("name", 0); + + final LogEvent event1 = mock(LogEvent.class); + final LogEvent event2 = mock(LogEvent.class); + final LogEvent event3 = mock(LogEvent.class); + + manager.startup(); + then(manager).should().startupInternal(); + reset(manager); + + manager.write(event1); + then(manager).should().connectAndStart(); + then(manager).should().writeInternal(same(event1)); + then(manager).should().commitAndClose(); + reset(manager); + + manager.write(event2); + then(manager).should().connectAndStart(); + then(manager).should().writeInternal(same(event2)); + then(manager).should().commitAndClose(); + reset(manager); + + manager.write(event3); + then(manager).should().connectAndStart(); + then(manager).should().writeInternal(same(event3)); + then(manager).should().commitAndClose(); + then(manager).shouldHaveNoMoreInteractions(); } @Test public void testBuffering02() throws Exception { - this.setUp("name", 4); - - final LogEvent event1 = createStrictMock(LogEvent.class); - final LogEvent event2 = createStrictMock(LogEvent.class); - final LogEvent event3 = createStrictMock(LogEvent.class); - final LogEvent event4 = createStrictMock(LogEvent.class); - - this.manager.startupInternal(); - expectLastCall(); - replay(this.manager); - - this.manager.startup(); - - this.manager.write(event1); - this.manager.write(event2); - this.manager.write(event3); - - verify(this.manager); - reset(this.manager); - this.manager.connectAndStart(); - expectLastCall(); - this.manager.writeInternal(same(event1)); - expectLastCall(); - this.manager.writeInternal(same(event2)); - expectLastCall(); - this.manager.writeInternal(same(event3)); - expectLastCall(); - this.manager.writeInternal(same(event4)); - expectLastCall(); - this.manager.commitAndClose(); - expectLastCall().andReturn(Boolean.TRUE); - replay(this.manager); - - this.manager.write(event4); + setUp("name", 4); + + final LogEvent event1 = mock(LogEvent.class); + final LogEvent event2 = mock(LogEvent.class); + final LogEvent event3 = mock(LogEvent.class); + final LogEvent event4 = mock(LogEvent.class); + + manager.startup(); + then(manager).should().startupInternal(); + + manager.write(event1); + manager.write(event2); + manager.write(event3); + manager.write(event4); + + then(manager).should().connectAndStart(); + then(manager).should().writeInternal(same(event1)); + then(manager).should().writeInternal(same(event2)); + then(manager).should().writeInternal(same(event3)); + then(manager).should().writeInternal(same(event4)); + then(manager).should().commitAndClose(); + then(manager).shouldHaveNoMoreInteractions(); } @Test public void testBuffering03() throws Exception { - this.setUp("name", 10); - - final LogEvent event1 = createStrictMock(LogEvent.class); - final LogEvent event2 = createStrictMock(LogEvent.class); - final LogEvent event3 = createStrictMock(LogEvent.class); - - this.manager.startupInternal(); - expectLastCall(); - replay(this.manager); - - this.manager.startup(); - - this.manager.write(event1); - this.manager.write(event2); - this.manager.write(event3); - - verify(this.manager); - reset(this.manager); - this.manager.connectAndStart(); - expectLastCall(); - this.manager.writeInternal(same(event1)); - expectLastCall(); - this.manager.writeInternal(same(event2)); - expectLastCall(); - this.manager.writeInternal(same(event3)); - expectLastCall(); - this.manager.commitAndClose(); - expectLastCall().andReturn(Boolean.TRUE); - replay(this.manager); - - this.manager.flush(); + setUp("name", 10); + + final LogEvent event1 = mock(LogEvent.class); + final LogEvent event2 = mock(LogEvent.class); + final LogEvent event3 = mock(LogEvent.class); + + manager.startup(); + then(manager).should().startupInternal(); + + manager.write(event1); + manager.write(event2); + manager.write(event3); + manager.flush(); + + then(manager).should().connectAndStart(); + then(manager).should().writeInternal(same(event1)); + then(manager).should().writeInternal(same(event2)); + then(manager).should().writeInternal(same(event3)); + then(manager).should().commitAndClose(); + then(manager).shouldHaveNoMoreInteractions(); } @Test public void testBuffering04() throws Exception { - this.setUp("name", 10); - - final LogEvent event1 = createStrictMock(LogEvent.class); - final LogEvent event2 = createStrictMock(LogEvent.class); - final LogEvent event3 = createStrictMock(LogEvent.class); - - this.manager.startupInternal(); - expectLastCall(); - replay(this.manager); - - this.manager.startup(); - - this.manager.write(event1); - this.manager.write(event2); - this.manager.write(event3); - - verify(this.manager); - reset(this.manager); - this.manager.connectAndStart(); - expectLastCall(); - this.manager.writeInternal(same(event1)); - expectLastCall(); - this.manager.writeInternal(same(event2)); - expectLastCall(); - this.manager.writeInternal(same(event3)); - expectLastCall(); - this.manager.commitAndClose(); - expectLastCall().andReturn(Boolean.TRUE); - this.manager.shutdownInternal(); - expectLastCall().andReturn(Boolean.TRUE); - replay(this.manager); - - this.manager.shutdown(); + setUp("name", 10); + + final LogEvent event1 = mock(LogEvent.class); + final LogEvent event2 = mock(LogEvent.class); + final LogEvent event3 = mock(LogEvent.class); + + manager.startup(); + then(manager).should().startupInternal(); + + manager.write(event1); + manager.write(event2); + manager.write(event3); + manager.shutdown(); + + then(manager).should().connectAndStart(); + then(manager).should().writeInternal(same(event1)); + then(manager).should().writeInternal(same(event2)); + then(manager).should().writeInternal(same(event3)); + then(manager).should().commitAndClose(); + then(manager).should().shutdownInternal(); + then(manager).shouldHaveNoMoreInteractions(); + } + + // this stub is provided because mocking constructors is hard + private static class StubDatabaseManager extends AbstractDatabaseManager { + + protected StubDatabaseManager(final String name, final int bufferSize) { + super(name, bufferSize); + } + + @Override + protected void startupInternal() throws Exception { + } + + @Override + protected boolean shutdownInternal() throws Exception { + return true; + } + + @Override + protected void connectAndStart() { + } + + @Override + protected void writeInternal(final LogEvent event) { + } + + @Override + protected boolean commitAndClose() { + return true; + } } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/78c6a1fc/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/AbstractJdbcAppenderTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/AbstractJdbcAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/AbstractJdbcAppenderTest.java index 881eab9..99c229d 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/AbstractJdbcAppenderTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/AbstractJdbcAppenderTest.java @@ -22,7 +22,6 @@ import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; - import javax.naming.InitialContext; import javax.sql.DataSource; @@ -34,15 +33,16 @@ import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.config.DefaultConfiguration; import org.apache.logging.log4j.status.StatusLogger; import org.apache.logging.log4j.util.Strings; -import org.easymock.IAnswer; import org.h2.util.IOUtils; import org.junit.After; import org.junit.Test; import org.mockejb.jndi.MockContextFactory; - -import static org.easymock.EasyMock.*; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; import static org.junit.Assert.*; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.mock; public abstract class AbstractJdbcAppenderTest { private final String databaseType; @@ -93,15 +93,13 @@ public abstract class AbstractJdbcAppenderTest { @Test public void testDataSourceConfig() throws Exception { - final DataSource dataSource = createStrictMock(DataSource.class); - - expect(dataSource.getConnection()).andAnswer(new IAnswer<Connection>() { + final DataSource dataSource = mock(DataSource.class); + given(dataSource.getConnection()).willAnswer(new Answer<Connection>() { @Override - public Connection answer() throws Throwable { + public Connection answer(final InvocationOnMock invocation) throws Throwable { return newConnection(); } - }).atLeastOnce(); - replay(dataSource); + }); MockContextFactory.setAsInitial(); @@ -147,8 +145,6 @@ public abstract class AbstractJdbcAppenderTest { IOUtils.readStringAndClose(resultSet.getNClob("exception").getCharacterStream(), -1)); assertFalse("There should not be two rows.", resultSet.next()); - - verify(dataSource); } finally { MockContextFactory.revertSetAsInitial(); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/78c6a1fc/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/DataSourceConnectionSourceTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/DataSourceConnectionSourceTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/DataSourceConnectionSourceTest.java index 7da9cb5..65ff060 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/DataSourceConnectionSourceTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/DataSourceConnectionSourceTest.java @@ -20,7 +20,6 @@ import java.sql.Connection; import java.sql.SQLException; import java.util.Arrays; import java.util.Collection; - import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; @@ -37,9 +36,9 @@ import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.mockejb.jndi.MockContextFactory; -import static org.easymock.EasyMock.*; - import static org.junit.Assert.*; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.mock; @RunWith(Parameterized.class) public class DataSourceConnectionSourceTest { @@ -112,13 +111,11 @@ public class DataSourceConnectionSourceTest { @Test public void testDataSource() throws NamingException, SQLException { - final DataSource dataSource = createStrictMock(DataSource.class); - final Connection connection1 = createStrictMock(Connection.class); - final Connection connection2 = createStrictMock(Connection.class); + final DataSource dataSource = mock(DataSource.class); + final Connection connection1 = mock(Connection.class); + final Connection connection2 = mock(Connection.class); - expect(dataSource.getConnection()).andReturn(connection1); - expect(dataSource.getConnection()).andReturn(connection2); - replay(dataSource, connection1, connection2); + given(dataSource.getConnection()).willReturn(connection1, connection2); this.context.bind(this.jndiURL, dataSource); @@ -134,8 +131,6 @@ public class DataSourceConnectionSourceTest { source = DataSourceConnectionSource.createConnectionSource(jndiURL.substring(0, jndiURL.length() - 1)); assertNull("The connection source should be null now.", source); - - verify(dataSource, connection1, connection2); } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/78c6a1fc/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/FactoryMethodConnectionSourceTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/FactoryMethodConnectionSourceTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/FactoryMethodConnectionSourceTest.java index cb02543..e8a99b7 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/FactoryMethodConnectionSourceTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jdbc/FactoryMethodConnectionSourceTest.java @@ -18,46 +18,23 @@ package org.apache.logging.log4j.core.appender.db.jdbc; import java.sql.Connection; import java.sql.SQLException; - import javax.sql.DataSource; -import org.apache.logging.log4j.Level; -import org.apache.logging.log4j.core.LoggerContext; -import org.apache.logging.log4j.core.config.ConfigurationFactory; -import org.apache.logging.log4j.status.StatusLogger; +import org.apache.logging.log4j.junit.LoggerContextRule; import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; +import org.junit.ClassRule; import org.junit.Test; -import static org.easymock.EasyMock.*; - import static org.junit.Assert.*; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.mock; public class FactoryMethodConnectionSourceTest { private static ThreadLocal<Object> holder = new ThreadLocal<>(); private static final String CONFIG = "log4j-fatalOnly.xml"; - @BeforeClass - public static void beforeClass() { - System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY, CONFIG); - final LoggerContext ctx = LoggerContext.getContext(); - ctx.reconfigure(); - final StatusLogger logger = StatusLogger.getLogger(); - logger.setLevel(Level.FATAL); - } - - @AfterClass - public static void tearDownClass() { - holder.remove(); - holder = null; - } - - @Before - public void setUp() { - - } + @ClassRule + public static LoggerContextRule ctx = new LoggerContextRule(CONFIG); @After public void tearDown() { @@ -107,13 +84,11 @@ public class FactoryMethodConnectionSourceTest { @Test public void testDataSourceReturnType() throws SQLException { - final DataSource dataSource = createStrictMock(DataSource.class); - final Connection connection1 = createStrictMock(Connection.class); - final Connection connection2 = createStrictMock(Connection.class); + final DataSource dataSource = mock(DataSource.class); + final Connection connection1 = mock(Connection.class); + final Connection connection2 = mock(Connection.class); - expect(dataSource.getConnection()).andReturn(connection1); - expect(dataSource.getConnection()).andReturn(connection2); - replay(dataSource, connection1, connection2); + given(dataSource.getConnection()).willReturn(connection1, connection2); holder.set(dataSource); @@ -126,15 +101,11 @@ public class FactoryMethodConnectionSourceTest { + "] " + DataSourceFactory.class.getName() + ".factoryMethod02() }", source.toString()); assertSame("The connection is not correct (1).", connection1, source.getConnection()); assertSame("The connection is not correct (2).", connection2, source.getConnection()); - - verify(connection1, connection2); } @Test public void testConnectionReturnType() throws SQLException { - final Connection connection = createStrictMock(Connection.class); - - replay(connection); + final Connection connection = mock(Connection.class); holder.set(connection); @@ -147,8 +118,6 @@ public class FactoryMethodConnectionSourceTest { + ConnectionFactory.class.getName() + ".anotherMethod03() }", source.toString()); assertSame("The connection is not correct (1).", connection, source.getConnection()); assertSame("The connection is not correct (2).", connection, source.getConnection()); - - verify(connection); } @SuppressWarnings("unused") http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/78c6a1fc/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/Log4jLookupTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/Log4jLookupTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/Log4jLookupTest.java index 3059a9a..0db5db0 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/Log4jLookupTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/Log4jLookupTest.java @@ -23,48 +23,43 @@ import org.apache.logging.log4j.core.config.Configuration; import org.apache.logging.log4j.core.config.ConfigurationAware; import org.apache.logging.log4j.core.config.ConfigurationSource; import org.apache.logging.log4j.core.impl.ContextAnchor; -import org.easymock.EasyMock; import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; import static org.apache.logging.log4j.core.lookup.Log4jLookup.KEY_CONFIG_LOCATION; import static org.apache.logging.log4j.core.lookup.Log4jLookup.KEY_CONFIG_PARENT_LOCATION; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; import static org.junit.Assert.*; +import static org.mockito.BDDMockito.given; /** * */ +@RunWith(MockitoJUnitRunner.class) public class Log4jLookupTest { private final static File EXPECT = new File(System.getProperty("user.home"), "/a/b/c/d/e/log4j2.xml"); - private LoggerContext mockCtx = null; - private Configuration config = null; - private ConfigurationSource configSrc = null; + + @Mock + private LoggerContext mockCtx; + @Mock + private Configuration config; + @Mock + private ConfigurationSource configSrc; @Before public void setup() throws URISyntaxException { - this.mockCtx = EasyMock.createMock(LoggerContext.class); ContextAnchor.THREAD_CONTEXT.set(mockCtx); - - this.config = EasyMock.createMock(Configuration.class); - - this.configSrc = EasyMock.createMock(ConfigurationSource.class); - expect(config.getConfigurationSource()).andReturn(configSrc); - expect(configSrc.getFile()).andReturn(EXPECT); - - replay(mockCtx, config, configSrc); + given(config.getConfigurationSource()).willReturn(configSrc); + given(configSrc.getFile()).willReturn(EXPECT); } @After public void cleanup() { - verify(mockCtx, config, configSrc); - ContextAnchor.THREAD_CONTEXT.set(null); - this.mockCtx = null; } @Test http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/78c6a1fc/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/Log4jLookupWithSpacesTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/Log4jLookupWithSpacesTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/Log4jLookupWithSpacesTest.java index 7b88ad4..e5ecb49 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/Log4jLookupWithSpacesTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/Log4jLookupWithSpacesTest.java @@ -24,47 +24,42 @@ import org.apache.logging.log4j.core.config.Configuration; import org.apache.logging.log4j.core.config.ConfigurationAware; import org.apache.logging.log4j.core.config.ConfigurationSource; import org.apache.logging.log4j.core.impl.ContextAnchor; -import org.easymock.EasyMock; import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; -import static org.apache.logging.log4j.core.lookup.Log4jLookup.*; - -import static org.easymock.EasyMock.*; - +import static org.apache.logging.log4j.core.lookup.Log4jLookup.KEY_CONFIG_LOCATION; +import static org.apache.logging.log4j.core.lookup.Log4jLookup.KEY_CONFIG_PARENT_LOCATION; import static org.junit.Assert.*; +import static org.mockito.BDDMockito.given; /** * */ +@RunWith(MockitoJUnitRunner.class) public class Log4jLookupWithSpacesTest { private final static File EXPECT = new File(System.getProperty("user.home"), "/a a/b b/c c/d d/e e/log4j2 file.xml"); - private LoggerContext mockCtx = null; - private Configuration config = null; - private ConfigurationSource configSrc = null; + @Mock + private LoggerContext mockCtx; + @Mock + private Configuration config; + @Mock + private ConfigurationSource configSrc; @Before public void setup() throws URISyntaxException, MalformedURLException { - this.mockCtx = EasyMock.createMock(LoggerContext.class); ContextAnchor.THREAD_CONTEXT.set(mockCtx); - - this.config = EasyMock.createMock(Configuration.class); - - this.configSrc = EasyMock.createMock(ConfigurationSource.class); - expect(config.getConfigurationSource()).andReturn(configSrc); - expect(configSrc.getFile()).andReturn(EXPECT); - - replay(mockCtx, config, configSrc); + given(config.getConfigurationSource()).willReturn(configSrc); + given(configSrc.getFile()).willReturn(EXPECT); } @After public void cleanup() { - verify(mockCtx, config, configSrc); - ContextAnchor.THREAD_CONTEXT.set(null); - this.mockCtx = null; } @Test http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/78c6a1fc/log4j-iostreams/pom.xml ---------------------------------------------------------------------- diff --git a/log4j-iostreams/pom.xml b/log4j-iostreams/pom.xml index c818aae..1ca56b4 100644 --- a/log4j-iostreams/pom.xml +++ b/log4j-iostreams/pom.xml @@ -63,8 +63,8 @@ <scope>test</scope> </dependency> <dependency> - <groupId>org.easymock</groupId> - <artifactId>easymock</artifactId> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> <scope>test</scope> </dependency> <dependency> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/78c6a1fc/log4j-iostreams/src/test/java/org/apache/logging/log4j/io/AbstractLoggerOutputStreamTest.java ---------------------------------------------------------------------- diff --git a/log4j-iostreams/src/test/java/org/apache/logging/log4j/io/AbstractLoggerOutputStreamTest.java b/log4j-iostreams/src/test/java/org/apache/logging/log4j/io/AbstractLoggerOutputStreamTest.java index 2f4f573..188b422 100644 --- a/log4j-iostreams/src/test/java/org/apache/logging/log4j/io/AbstractLoggerOutputStreamTest.java +++ b/log4j-iostreams/src/test/java/org/apache/logging/log4j/io/AbstractLoggerOutputStreamTest.java @@ -20,13 +20,12 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; -import org.easymock.EasyMock; import org.junit.Before; import org.junit.Test; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; import static org.junit.Assert.*; +import static org.mockito.BDDMockito.then; +import static org.mockito.Mockito.mock; public abstract class AbstractLoggerOutputStreamTest extends AbstractStreamTest { @@ -63,10 +62,7 @@ public abstract class AbstractLoggerOutputStreamTest extends AbstractStreamTest @Test public void testFlush() throws IOException { - final OutputStream os = EasyMock.createMock("out", OutputStream.class); - os.flush(); // expect the flush to come through to the mocked OutputStream - os.close(); - replay(os); + final OutputStream os = mock(OutputStream.class); try (final OutputStream filteredOut = IoBuilder.forLogger(getExtendedLogger()) @@ -75,7 +71,10 @@ public abstract class AbstractLoggerOutputStreamTest extends AbstractStreamTest .buildOutputStream()) { filteredOut.flush(); } - verify(os); + + then(os).should().flush(); + then(os).should().close(); + then(os).shouldHaveNoMoreInteractions(); } @Test http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/78c6a1fc/log4j-iostreams/src/test/java/org/apache/logging/log4j/io/AbstractLoggerWriterTest.java ---------------------------------------------------------------------- diff --git a/log4j-iostreams/src/test/java/org/apache/logging/log4j/io/AbstractLoggerWriterTest.java b/log4j-iostreams/src/test/java/org/apache/logging/log4j/io/AbstractLoggerWriterTest.java index c40cdf6..7560546 100644 --- a/log4j-iostreams/src/test/java/org/apache/logging/log4j/io/AbstractLoggerWriterTest.java +++ b/log4j-iostreams/src/test/java/org/apache/logging/log4j/io/AbstractLoggerWriterTest.java @@ -21,13 +21,12 @@ import java.io.OutputStream; import java.io.StringWriter; import java.io.Writer; -import org.easymock.EasyMock; import org.junit.Before; import org.junit.Test; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; import static org.junit.Assert.*; +import static org.mockito.BDDMockito.then; +import static org.mockito.Mockito.mock; public abstract class AbstractLoggerWriterTest extends AbstractStreamTest { protected StringWriter wrapped; @@ -65,10 +64,7 @@ public abstract class AbstractLoggerWriterTest extends AbstractStreamTest { @Test public void testFlush() throws IOException { - final OutputStream out = EasyMock.createMock(OutputStream.class); - out.flush(); // expect the flush to come through to the mocked OutputStream - out.close(); - replay(out); + final OutputStream out = mock(OutputStream.class); try (final OutputStream filteredOut = IoBuilder.forLogger(getExtendedLogger()) @@ -77,7 +73,10 @@ public abstract class AbstractLoggerWriterTest extends AbstractStreamTest { .buildOutputStream()) { filteredOut.flush(); } - verify(out); + + then(out).should().flush(); + then(out).should().close(); + then(out).shouldHaveNoMoreInteractions(); } @Test http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/78c6a1fc/log4j-nosql/pom.xml ---------------------------------------------------------------------- diff --git a/log4j-nosql/pom.xml b/log4j-nosql/pom.xml index ccf44e9..0ec75f5 100644 --- a/log4j-nosql/pom.xml +++ b/log4j-nosql/pom.xml @@ -54,8 +54,9 @@ <artifactId>junit</artifactId> </dependency> <dependency> - <groupId>org.easymock</groupId> - <artifactId>easymock</artifactId> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <scope>test</scope> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/78c6a1fc/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlAppenderTest.java ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlAppenderTest.java b/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlAppenderTest.java index c48cf0a..236218c 100644 --- a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlAppenderTest.java +++ b/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlAppenderTest.java @@ -16,17 +16,19 @@ */ package org.apache.logging.log4j.nosql.appender; -import static org.easymock.EasyMock.createStrictMock; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.verify; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; - import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; + +import static org.junit.Assert.*; +@RunWith(MockitoJUnitRunner.class) public class NoSqlAppenderTest { + @Mock + private NoSqlProvider<?> provider; + @Test public void testNoProvider() { final NoSqlAppender appender = NoSqlAppender.createAppender("myName01", null, null, null, null); @@ -36,11 +38,6 @@ public class NoSqlAppenderTest { @Test public void testProvider() { - @SuppressWarnings("unchecked") - final NoSqlProvider<?> provider = createStrictMock(NoSqlProvider.class); - - replay(provider); - final NoSqlAppender appender = NoSqlAppender.createAppender("myName01", null, null, null, provider); assertNotNull("The appender should not be null.", appender); @@ -49,17 +46,10 @@ public class NoSqlAppenderTest { appender.toString()); appender.stop(); - - verify(provider); } @Test public void testProviderBuffer() { - @SuppressWarnings("unchecked") - final NoSqlProvider<?> provider = createStrictMock(NoSqlProvider.class); - - replay(provider); - final NoSqlAppender appender = NoSqlAppender.createAppender("anotherName02", null, null, "25", provider); assertNotNull("The appender should not be null.", appender); @@ -68,7 +58,5 @@ public class NoSqlAppenderTest { + " } }", appender.toString()); appender.stop(); - - verify(provider); } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/78c6a1fc/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManagerTest.java ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManagerTest.java b/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManagerTest.java index 2f597b5..af55e2c 100644 --- a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManagerTest.java +++ b/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManagerTest.java @@ -16,23 +16,9 @@ */ package org.apache.logging.log4j.nosql.appender; -import static org.easymock.EasyMock.anyInt; -import static org.easymock.EasyMock.capture; -import static org.easymock.EasyMock.createStrictMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.expectLastCall; -import static org.easymock.EasyMock.getCurrentArguments; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.reset; -import static org.easymock.EasyMock.verify; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - import java.io.IOException; import java.sql.SQLException; +import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -43,173 +29,132 @@ import org.apache.logging.log4j.MarkerManager; import org.apache.logging.log4j.ThreadContext; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.appender.AppenderLoggingException; +import org.apache.logging.log4j.core.impl.Log4jLogEvent; import org.apache.logging.log4j.junit.ThreadContextStackRule; import org.apache.logging.log4j.message.Message; -import org.easymock.Capture; -import org.easymock.EasyMock; -import org.easymock.IAnswer; -import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; - +import org.junit.rules.ExpectedException; +import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.Mock; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.stubbing.Answer; + +import static org.junit.Assert.*; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.then; +import static org.mockito.Mockito.mock; + +@RunWith(MockitoJUnitRunner.class) public class NoSqlDatabaseManagerTest { + @Mock private NoSqlConnection<Map<String, Object>, DefaultNoSqlObject> connection; + @Mock private NoSqlProvider<NoSqlConnection<Map<String, Object>, DefaultNoSqlObject>> provider; + @Mock + private Message message; + @Captor + private ArgumentCaptor<NoSqlObject<Map<String, Object>>> captor; @Rule - public final ThreadContextStackRule threadContextRule = new ThreadContextStackRule(); + public final ThreadContextStackRule threadContextRule = new ThreadContextStackRule(); + @Rule + public final ExpectedException expectedException = ExpectedException.none(); @Before public void setUp() { - this.provider = createStrictMock(NoSqlProvider.class); - this.connection = createStrictMock(NoSqlConnection.class); - } - - @After - public void tearDown() { - verify(this.provider, this.connection); + given(provider.getConnection()).willReturn(connection); + given(connection.createObject()).willAnswer(new Answer<DefaultNoSqlObject>() { + @Override + public DefaultNoSqlObject answer(final InvocationOnMock invocation) throws Throwable { + return new DefaultNoSqlObject(); + } + }); + given(connection.createList(anyInt())).willAnswer(new Answer<DefaultNoSqlObject[]>() { + @Override + public DefaultNoSqlObject[] answer(final InvocationOnMock invocation) throws Throwable { + return new DefaultNoSqlObject[invocation.<Integer>getArgument(0)]; + } + }); } @Test - public void testConnection() { - replay(this.provider, this.connection); - - try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0, - this.provider)) { - - assertNotNull("The manager should not be null.", manager); + public void testConnection() { + try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0, + provider)) { - verify(this.provider, this.connection); - reset(this.provider, this.connection); - expect(this.provider.getConnection()).andReturn(this.connection); - replay(this.provider, this.connection); + assertNotNull("The manager should not be null.", manager); - manager.connectAndStart(); - manager.commitAndClose(); - } - } + manager.connectAndStart(); + then(provider).should().getConnection(); + manager.commitAndClose(); + } + } @Test - public void testWriteInternalNotConnected01() { - replay(this.provider, this.connection); - - try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0, - this.provider)) { - - verify(this.provider, this.connection); - reset(this.provider, this.connection); - - final LogEvent event = createStrictMock(LogEvent.class); - replay(this.provider, this.connection, event); - - try { - manager.writeInternal(event); - fail("Expected AppenderLoggingException."); - } catch (final AppenderLoggingException ignore) { - /* */ - } - - verify(event); - } - } + public void testWriteInternalNotConnected01() { + try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0, + provider)) { + expectedException.expect(AppenderLoggingException.class); + manager.writeInternal(mock(LogEvent.class)); + } + } @Test public void testWriteInternalNotConnected02() { - final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0, this.provider); + given(connection.isClosed()).willReturn(true); - try { - replay(this.provider, this.connection); + try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0, + provider)) { manager.startup(); - - verify(this.provider, this.connection); - reset(this.provider, this.connection); - expect(this.provider.getConnection()).andReturn(this.connection); - replay(this.provider, this.connection); - manager.connectAndStart(); + then(provider).should().getConnection(); - verify(this.provider, this.connection); - reset(this.provider, this.connection); - - final LogEvent event = createStrictMock(LogEvent.class); - expect(this.connection.isClosed()).andReturn(true); - replay(this.provider, this.connection, event); - - try { - manager.writeInternal(event); - fail("Expected AppenderLoggingException."); - } catch (final AppenderLoggingException ignore) { - /* */ - } - } finally { - try { - manager.close(); - } catch (final Throwable ignore) { - /* */ - } + expectedException.expect(AppenderLoggingException.class); + manager.writeInternal(mock(LogEvent.class)); } } @Test public void testWriteInternal01() { - final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0, this.provider); + given(connection.isClosed()).willReturn(false); + given(message.getFormattedMessage()).willReturn("My formatted message 01."); - try { - replay(this.provider, this.connection); + try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0, + provider)) { manager.startup(); - - verify(this.provider, this.connection); - reset(this.provider, this.connection); - expect(this.provider.getConnection()).andReturn(this.connection); - replay(this.provider, this.connection); - manager.connectAndStart(); - - verify(this.provider, this.connection); - reset(this.provider, this.connection); - - final Capture<NoSqlObject<Map<String, Object>>> capture = EasyMock.newCapture(); - - final LogEvent event = createStrictMock(LogEvent.class); - final Message message = createStrictMock(Message.class); - - expect(this.connection.isClosed()).andReturn(false); - expect(this.connection.createObject()).andAnswer(new IAnswer<DefaultNoSqlObject>() { - @Override - public DefaultNoSqlObject answer() throws Throwable { - return new DefaultNoSqlObject(); - } - }).atLeastOnce(); - expect(event.getLevel()).andReturn(Level.WARN); - expect(event.getLoggerName()).andReturn("com.foo.NoSQLDbTest.testWriteInternal01"); - expect(event.getMessage()).andReturn(message).times(2); - expect(message.getFormattedMessage()).andReturn("My formatted message 01."); - expect(event.getSource()).andReturn(new StackTraceElement("com.foo.Bar", "testMethod01", "Bar.java", 15)); - expect(event.getMarker()).andReturn(null); - expect(event.getThreadId()).andReturn(1L); - expect(event.getThreadName()).andReturn("MyThread-A"); - expect(event.getThreadPriority()).andReturn(1); - expect(event.getTimeMillis()).andReturn(1234567890123L).times(2); - expect(event.getThrown()).andReturn(null); - expect(event.getContextMap()).andReturn(null); - expect(event.getContextStack()).andReturn(null); - this.connection.insertObject(capture(capture)); - expectLastCall(); - replay(this.provider, this.connection, event, message); + then(provider).should().getConnection(); + + final LogEvent event = Log4jLogEvent.newBuilder() + .setLevel(Level.WARN) + .setLoggerName("com.foo.NoSQLDbTest.testWriteInternal01") + .setMessage(message) + .setSource(new StackTraceElement("com.foo.Bar", "testMethod01", "Bar.java", 15)) + .setThreadId(1L) + .setThreadName("MyThread-A") + .setThreadPriority(1) + .setTimeMillis(1234567890123L) + .build(); manager.writeInternal(event); + then(connection).should().insertObject(captor.capture()); - final NoSqlObject<Map<String, Object>> inserted = capture.getValue(); + final NoSqlObject<Map<String, Object>> inserted = captor.getValue(); assertNotNull("The inserted value should not be null.", inserted); final Map<String, Object> object = inserted.unwrap(); assertNotNull("The unwrapped object should not be null.", object); assertEquals("The level is not correct.", Level.WARN, object.get("level")); assertEquals("The logger is not correct.", "com.foo.NoSQLDbTest.testWriteInternal01", - object.get("loggerName")); + object.get("loggerName")); assertEquals("The message is not correct.", "My formatted message 01.", object.get("message")); assertEquals("The thread is not correct.", "MyThread-A", object.get("threadName")); assertEquals("The millis is not correct.", 1234567890123L, object.get("millis")); @@ -227,99 +172,61 @@ public class NoSqlDatabaseManagerTest { assertNull("The thrown should be null.", object.get("thrown")); - assertNull("The context map should be null.", object.get("contextMap")); + assertTrue("The context map should be empty.", ((Map) object.get("contextMap")).isEmpty()); - assertNull("The context stack should be null.", object.get("contextStack")); + assertTrue("The context stack should be null.", ((Collection) object.get("contextStack")).isEmpty()); - verify(this.provider, this.connection, event, message); - } finally { - try { - manager.close(); - } catch (final Throwable ignore) { - /* */ - } } } @Test public void testWriteInternal02() { - final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0, this.provider); - - try { - replay(this.provider, this.connection); + given(connection.isClosed()).willReturn(false); + given(message.getFormattedMessage()).willReturn("Another cool message 02."); + try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0, + provider)) { manager.startup(); - verify(this.provider, this.connection); - reset(this.provider, this.connection); - expect(this.provider.getConnection()).andReturn(this.connection); - replay(this.provider, this.connection); - manager.connectAndStart(); - - verify(this.provider, this.connection); - reset(this.provider, this.connection); - - final Capture<NoSqlObject<Map<String, Object>>> capture = EasyMock.newCapture(); + then(provider).should().getConnection(); final RuntimeException exception = new RuntimeException("This is something cool!"); final Map<String, String> context = new HashMap<>(); context.put("hello", "world"); context.put("user", "pass"); - final LogEvent event = createStrictMock(LogEvent.class); - final Message message = createStrictMock(Message.class); ThreadContext.push("message1"); ThreadContext.push("stack2"); final ThreadContext.ContextStack stack = ThreadContext.getImmutableStack(); ThreadContext.clearStack(); - expect(this.connection.isClosed()).andReturn(false); - expect(this.connection.createObject()).andAnswer(new IAnswer<DefaultNoSqlObject>() { - @Override - public DefaultNoSqlObject answer() throws Throwable { - return new DefaultNoSqlObject(); - } - }).atLeastOnce(); - expect(this.connection.createList(anyInt())).andAnswer(new IAnswer<DefaultNoSqlObject[]>() { - @Override - public DefaultNoSqlObject[] answer() throws Throwable { - return new DefaultNoSqlObject[(Integer) getCurrentArguments()[0]]; - } - }); - expect(this.connection.createObject()).andAnswer(new IAnswer<DefaultNoSqlObject>() { - @Override - public DefaultNoSqlObject answer() throws Throwable { - return new DefaultNoSqlObject(); - } - }).atLeastOnce(); - expect(event.getLevel()).andReturn(Level.DEBUG); - expect(event.getLoggerName()).andReturn("com.foo.NoSQLDbTest.testWriteInternal02"); - expect(event.getMessage()).andReturn(message).times(2); - expect(message.getFormattedMessage()).andReturn("Another cool message 02."); - expect(event.getSource()).andReturn(new StackTraceElement("com.bar.Foo", "anotherMethod03", "Foo.java", 9)); - expect(event.getMarker()).andReturn(MarkerManager.getMarker("LoneMarker")); - expect(event.getThreadId()).andReturn(1L); - expect(event.getThreadName()).andReturn("AnotherThread-B"); - expect(event.getThreadPriority()).andReturn(1); - expect(event.getTimeMillis()).andReturn(987654321564L).times(2); - expect(event.getThrown()).andReturn(exception); - expect(event.getContextMap()).andReturn(context); - expect(event.getContextStack()).andReturn(stack); - this.connection.insertObject(capture(capture)); - expectLastCall(); - replay(this.provider, this.connection, event, message); + final LogEvent event = Log4jLogEvent.newBuilder() + .setLevel(Level.DEBUG) + .setLoggerName("com.foo.NoSQLDbTest.testWriteInternal02") + .setMessage(message) + .setSource(new StackTraceElement("com.bar.Foo", "anotherMethod03", "Foo.java", 9)) + .setMarker(MarkerManager.getMarker("LoneMarker")) + .setThreadId(1L) + .setThreadName("AnotherThread-B") + .setThreadPriority(1) + .setTimeMillis(987654321564L) + .setThrown(exception) + .setContextMap(context) + .setContextStack(stack) + .build(); manager.writeInternal(event); + then(connection).should().insertObject(captor.capture()); - final NoSqlObject<Map<String, Object>> inserted = capture.getValue(); + final NoSqlObject<Map<String, Object>> inserted = captor.getValue(); assertNotNull("The inserted value should not be null.", inserted); final Map<String, Object> object = inserted.unwrap(); assertNotNull("The unwrapped object should not be null.", object); assertEquals("The level is not correct.", Level.DEBUG, object.get("level")); assertEquals("The logger is not correct.", "com.foo.NoSQLDbTest.testWriteInternal02", - object.get("loggerName")); + object.get("loggerName")); assertEquals("The message is not correct.", "Another cool message 02.", object.get("message")); assertEquals("The thread is not correct.", "AnotherThread-B", object.get("threadName")); assertEquals("The millis is not correct.", 987654321564L, object.get("millis")); @@ -348,17 +255,17 @@ public class NoSqlDatabaseManagerTest { @SuppressWarnings("unchecked") final List<Map<String, Object>> stackTrace = (List<Map<String, Object>>) thrown.get("stackTrace"); assertEquals("The thrown stack trace length is not correct.", exception.getStackTrace().length, - stackTrace.size()); + stackTrace.size()); for (int i = 0; i < exception.getStackTrace().length; i++) { final StackTraceElement e1 = exception.getStackTrace()[i]; final Map<String, Object> e2 = stackTrace.get(i); assertEquals("Element class name [" + i + "] is not correct.", e1.getClassName(), e2.get("className")); assertEquals("Element method name [" + i + "] is not correct.", e1.getMethodName(), - e2.get("methodName")); + e2.get("methodName")); assertEquals("Element file name [" + i + "] is not correct.", e1.getFileName(), e2.get("fileName")); assertEquals("Element line number [" + i + "] is not correct.", e1.getLineNumber(), - e2.get("lineNumber")); + e2.get("lineNumber")); } assertNull("The thrown should have no cause.", thrown.get("cause")); @@ -367,37 +274,20 @@ public class NoSqlDatabaseManagerTest { assertTrue("The context stack should be list.", object.get("contextStack") instanceof List); assertEquals("The context stack is not correct.", stack.asList(), object.get("contextStack")); - - verify(this.provider, this.connection, event, message); - } finally { - try { - manager.close(); - } catch (final Throwable ignore) { - /* */ - } } } @Test public void testWriteInternal03() { - final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0, this.provider); - - try { - replay(this.provider, this.connection); + given(connection.isClosed()).willReturn(false); + given(message.getFormattedMessage()).willReturn("Another cool message 02."); + try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0, + provider)) { manager.startup(); - verify(this.provider, this.connection); - reset(this.provider, this.connection); - expect(this.provider.getConnection()).andReturn(this.connection); - replay(this.provider, this.connection); - manager.connectAndStart(); - - verify(this.provider, this.connection); - reset(this.provider, this.connection); - - final Capture<NoSqlObject<Map<String, Object>>> capture = EasyMock.newCapture(); + then(provider).should().getConnection(); final IOException exception1 = new IOException("This is the cause."); final SQLException exception2 = new SQLException("This is the result.", exception1); @@ -405,73 +295,39 @@ public class NoSqlDatabaseManagerTest { context.put("hello", "world"); context.put("user", "pass"); - final LogEvent event = createStrictMock(LogEvent.class); - final Message message = createStrictMock(Message.class); ThreadContext.push("message1"); ThreadContext.push("stack2"); final ThreadContext.ContextStack stack = ThreadContext.getImmutableStack(); ThreadContext.clearStack(); - expect(this.connection.isClosed()).andReturn(false); - expect(this.connection.createObject()).andAnswer(new IAnswer<DefaultNoSqlObject>() { - @Override - public DefaultNoSqlObject answer() throws Throwable { - return new DefaultNoSqlObject(); - } - }).atLeastOnce(); - expect(this.connection.createList(anyInt())).andAnswer(new IAnswer<DefaultNoSqlObject[]>() { - @Override - public DefaultNoSqlObject[] answer() throws Throwable { - return new DefaultNoSqlObject[(Integer) getCurrentArguments()[0]]; - } - }); - expect(this.connection.createObject()).andAnswer(new IAnswer<DefaultNoSqlObject>() { - @Override - public DefaultNoSqlObject answer() throws Throwable { - return new DefaultNoSqlObject(); - } - }).atLeastOnce(); - expect(this.connection.createList(anyInt())).andAnswer(new IAnswer<DefaultNoSqlObject[]>() { - @Override - public DefaultNoSqlObject[] answer() throws Throwable { - return new DefaultNoSqlObject[(Integer) getCurrentArguments()[0]]; - } - }); - expect(this.connection.createObject()).andAnswer(new IAnswer<DefaultNoSqlObject>() { - @Override - public DefaultNoSqlObject answer() throws Throwable { - return new DefaultNoSqlObject(); - } - }).atLeastOnce(); - expect(event.getLevel()).andReturn(Level.DEBUG); - expect(event.getLoggerName()).andReturn("com.foo.NoSQLDbTest.testWriteInternal02"); - expect(event.getMessage()).andReturn(message).times(2); - expect(message.getFormattedMessage()).andReturn("Another cool message 02."); - expect(event.getSource()).andReturn(new StackTraceElement("com.bar.Foo", "anotherMethod03", "Foo.java", 9)); - expect(event.getMarker()).andReturn( - MarkerManager.getMarker("AnotherMarker").addParents(MarkerManager.getMarker("Parent1").addParents(MarkerManager.getMarker("GrandParent1")), - MarkerManager.getMarker("Parent2"))); - expect(event.getThreadId()).andReturn(1L); - expect(event.getThreadName()).andReturn("AnotherThread-B"); - expect(event.getThreadPriority()).andReturn(1); - expect(event.getTimeMillis()).andReturn(987654321564L).times(2); - expect(event.getThrown()).andReturn(exception2); - expect(event.getContextMap()).andReturn(context); - expect(event.getContextStack()).andReturn(stack); - this.connection.insertObject(capture(capture)); - expectLastCall(); - replay(this.provider, this.connection, event, message); + final LogEvent event = Log4jLogEvent.newBuilder() + .setLevel(Level.DEBUG) + .setLoggerName("com.foo.NoSQLDbTest.testWriteInternal02") + .setMessage(message) + .setSource(new StackTraceElement("com.bar.Foo", "anotherMethod03", "Foo.java", 9)) + .setMarker(MarkerManager.getMarker("AnotherMarker").addParents( + MarkerManager.getMarker("Parent1").addParents(MarkerManager.getMarker("GrandParent1")), + MarkerManager.getMarker("Parent2"))) + .setThreadId(1L) + .setThreadName("AnotherThread-B") + .setThreadPriority(1) + .setTimeMillis(987654321564L) + .setThrown(exception2) + .setContextMap(context) + .setContextStack(stack) + .build(); manager.writeInternal(event); + then(connection).should().insertObject(captor.capture()); - final NoSqlObject<Map<String, Object>> inserted = capture.getValue(); + final NoSqlObject<Map<String, Object>> inserted = captor.getValue(); assertNotNull("The inserted value should not be null.", inserted); final Map<String, Object> object = inserted.unwrap(); assertNotNull("The unwrapped object should not be null.", object); assertEquals("The level is not correct.", Level.DEBUG, object.get("level")); assertEquals("The logger is not correct.", "com.foo.NoSQLDbTest.testWriteInternal02", - object.get("loggerName")); + object.get("loggerName")); assertEquals("The message is not correct.", "Another cool message 02.", object.get("message")); assertEquals("The thread is not correct.", "AnotherThread-B", object.get("threadName")); assertEquals("The millis is not correct.", 987654321564L, object.get("millis")); @@ -494,12 +350,12 @@ public class NoSqlDatabaseManagerTest { @SuppressWarnings("unchecked") final List<Object> markerParents = (List<Object>) marker.get("parents"); assertEquals("The marker parents should contain two parents", 2, markerParents.size()); - + assertTrue("The marker parents[0] should be a map.", markerParents.get(0) instanceof Map); @SuppressWarnings("unchecked") final Map<String, Object> parent1 = (Map<String, Object>) markerParents.get(0); assertEquals("The first marker parent name is not correct.", "Parent1", parent1.get("name")); - + assertTrue("The marker parents[1] should be a map.", markerParents.get(1) instanceof Map); @SuppressWarnings("unchecked") final Map<String, Object> parent2 = (Map<String, Object>) markerParents.get(1); @@ -510,7 +366,7 @@ public class NoSqlDatabaseManagerTest { @SuppressWarnings("unchecked") final List<Object> parent1Parents = (List<Object>) parent1.get("parents"); assertEquals("The parent1 parents should have only one parent", 1, parent1Parents.size()); - + assertTrue("The parent1Parents[0] should be a map.", parent1Parents.get(0) instanceof Map); @SuppressWarnings("unchecked") final Map<String, Object> parent1parent = (Map<String, Object>) parent1Parents.get(0); @@ -526,17 +382,17 @@ public class NoSqlDatabaseManagerTest { @SuppressWarnings("unchecked") final List<Map<String, Object>> stackTrace = (List<Map<String, Object>>) thrown.get("stackTrace"); assertEquals("The thrown stack trace length is not correct.", exception2.getStackTrace().length, - stackTrace.size()); + stackTrace.size()); for (int i = 0; i < exception2.getStackTrace().length; i++) { final StackTraceElement e1 = exception2.getStackTrace()[i]; final Map<String, Object> e2 = stackTrace.get(i); assertEquals("Element class name [" + i + "] is not correct.", e1.getClassName(), e2.get("className")); assertEquals("Element method name [" + i + "] is not correct.", e1.getMethodName(), - e2.get("methodName")); + e2.get("methodName")); assertEquals("Element file name [" + i + "] is not correct.", e1.getFileName(), e2.get("fileName")); assertEquals("Element line number [" + i + "] is not correct.", e1.getLineNumber(), - e2.get("lineNumber")); + e2.get("lineNumber")); } assertTrue("The thrown cause should be a map.", thrown.get("cause") instanceof Map); @SuppressWarnings("unchecked") @@ -547,17 +403,17 @@ public class NoSqlDatabaseManagerTest { @SuppressWarnings("unchecked") final List<Map<String, Object>> causeStackTrace = (List<Map<String, Object>>) cause.get("stackTrace"); assertEquals("The cause stack trace length is not correct.", exception1.getStackTrace().length, - causeStackTrace.size()); + causeStackTrace.size()); for (int i = 0; i < exception1.getStackTrace().length; i++) { final StackTraceElement e1 = exception1.getStackTrace()[i]; final Map<String, Object> e2 = causeStackTrace.get(i); assertEquals("Element class name [" + i + "] is not correct.", e1.getClassName(), e2.get("className")); assertEquals("Element method name [" + i + "] is not correct.", e1.getMethodName(), - e2.get("methodName")); + e2.get("methodName")); assertEquals("Element file name [" + i + "] is not correct.", e1.getFileName(), e2.get("fileName")); assertEquals("Element line number [" + i + "] is not correct.", e1.getLineNumber(), - e2.get("lineNumber")); + e2.get("lineNumber")); } assertNull("The cause should have no cause.", cause.get("cause")); @@ -566,14 +422,6 @@ public class NoSqlDatabaseManagerTest { assertTrue("The context stack should be list.", object.get("contextStack") instanceof List); assertEquals("The context stack is not correct.", stack.asList(), object.get("contextStack")); - - verify(this.provider, this.connection, event, message); - } finally { - try { - manager.close(); - } catch (final Throwable ignore) { - /* */ - } } } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/78c6a1fc/log4j-web/pom.xml ---------------------------------------------------------------------- diff --git a/log4j-web/pom.xml b/log4j-web/pom.xml index 22dd052..db78e15 100644 --- a/log4j-web/pom.xml +++ b/log4j-web/pom.xml @@ -69,8 +69,8 @@ <scope>test</scope> </dependency> <dependency> - <groupId>org.easymock</groupId> - <artifactId>easymock</artifactId> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> <scope>test</scope> </dependency> </dependencies>
