diff options
Diffstat (limited to 'src/test/java/org/mockitousage/session/MockitoSessionTest.java')
-rw-r--r-- | src/test/java/org/mockitousage/session/MockitoSessionTest.java | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/test/java/org/mockitousage/session/MockitoSessionTest.java b/src/test/java/org/mockitousage/session/MockitoSessionTest.java index a87928c..5271f92 100644 --- a/src/test/java/org/mockitousage/session/MockitoSessionTest.java +++ b/src/test/java/org/mockitousage/session/MockitoSessionTest.java @@ -5,12 +5,15 @@ package org.mockitousage.session; import org.junit.After; +import org.junit.Before; import org.junit.Test; import org.junit.runner.JUnitCore; import org.junit.runner.Result; +import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoSession; +import org.mockito.exceptions.misusing.InjectMocksException; import org.mockito.exceptions.misusing.UnfinishedStubbingException; import org.mockito.quality.Strictness; import org.mockitousage.IMethods; @@ -97,6 +100,17 @@ public class MockitoSessionTest extends TestBase { resetState(); } + @Test public void cleans_up_state_when_init_fails() { + //when + Result result = junit.run(MockitoSessionTest.SessionWithInitMocksFailure.class); + + //expect that both failures are the same, indicating correct listener cleanup + //incorrect cleanup causes 1 failure to be InjectMocksException + // but the next test method would have failed with unuseful error that session was not cleaned up + JUnitResultAssert.assertThat(result) + .fails(2, InjectMocksException.class); + } + public static class SessionWithoutAnyConfiguration { @Mock IMethods mock; @@ -221,4 +235,36 @@ public class MockitoSessionTest extends TestBase { verify(mock); } } + + public static class SessionWithInitMocksFailure { + @InjectMocks private ConstructorFail sut; + MockitoSession mockito; + + @Before + public void before() { + mockito = Mockito.mockitoSession().initMocks(this).startMocking(); + } + + @After public void after() { + if (mockito != null) { + //so that we reduce amount of exceptions for easier assertions + //otherwise we would get an NPE here + mockito.finishMocking(); + } + } + + @Test public void test1() { + //should fail the same way + } + + @Test public void test2() { + //should fail the same way + } + + static class ConstructorFail { + ConstructorFail() { + throw new RuntimeException("Boo!"); + } + } + } } |