1 package org.mockitousage.session; 2 3 import org.junit.After; 4 import org.junit.Test; 5 import org.junit.runner.JUnitCore; 6 import org.junit.runner.Result; 7 import org.mockito.Mock; 8 import org.mockito.Mockito; 9 import org.mockito.MockitoSession; 10 import org.mockito.exceptions.misusing.UnfinishedStubbingException; 11 import org.mockito.quality.Strictness; 12 import org.mockitousage.IMethods; 13 import org.mockitoutil.JUnitResultAssert; 14 15 import static junit.framework.TestCase.assertNotNull; 16 import static junit.framework.TestCase.assertNull; 17 import static org.junit.Assert.assertTrue; 18 import static org.mockito.Mockito.when; 19 20 public class MockitoSessionTest { 21 22 private JUnitCore junit = new JUnitCore(); 23 session_without_any_configuration()24 @Test public void session_without_any_configuration() { 25 //when 26 Result result = junit.run(MockitoSessionTest.SessionWithoutAnyConfiguration.class); 27 28 //expect 29 JUnitResultAssert.assertThat(result).succeeds(1); 30 } 31 session_without_init_mocks_configured()32 @Test public void session_without_init_mocks_configured() { 33 //when 34 Result result = junit.run(MockitoSessionTest.SessionWithoutInitMocksConfigured.class); 35 36 //expect 37 JUnitResultAssert.assertThat(result).succeeds(1); 38 } 39 session_without_strictness_configured()40 @Test public void session_without_strictness_configured() { 41 //when 42 Result result = junit.run(MockitoSessionTest.SessionWithoutStrictnessConfigured.class); 43 44 //expect 45 JUnitResultAssert.assertThat(result).succeeds(1); 46 } 47 session_with_incorrect_mockito_usage()48 @Test public void session_with_incorrect_mockito_usage() { 49 //when 50 Result result = junit.run(MockitoSessionTest.SessionWithIncorrectMockitoUsage.class); 51 52 //expect 53 JUnitResultAssert.assertThat(result).fails(1, UnfinishedStubbingException.class); 54 } 55 reports_other_failure_and_incorrect_mockito_usage()56 @Test public void reports_other_failure_and_incorrect_mockito_usage() { 57 //when 58 Result result = junit.run(MockitoSessionTest.SessionWithTestFailureAndIncorrectMockitoUsage.class); 59 60 //expect 61 JUnitResultAssert.assertThat(result) 62 .failsExactly(AssertionError.class, UnfinishedStubbingException.class); 63 } 64 65 public static class SessionWithoutAnyConfiguration { 66 67 @Mock IMethods mock; 68 69 //session without initMocks is not currently supported 70 MockitoSession mockito = Mockito.mockitoSession().startMocking(); 71 after()72 @After public void after() { 73 mockito.finishMocking(); 74 } 75 some_test()76 @Test public void some_test() { 77 assertNull(mock); //initMocks() was not used when configuring session 78 } 79 } 80 81 public static class SessionWithoutInitMocksConfigured { 82 83 @Mock IMethods mock; 84 85 MockitoSession mockito = Mockito.mockitoSession().strictness(Strictness.LENIENT).startMocking(); 86 after()87 @After public void after() { 88 mockito.finishMocking(); 89 } 90 some_test()91 @Test public void some_test() { 92 assertNull(mock); //initMocks() was not used when configuring session 93 } 94 } 95 96 public static class SessionWithoutStrictnessConfigured { 97 @Mock IMethods mock; 98 99 MockitoSession mockito = Mockito.mockitoSession().initMocks(this).startMocking(); 100 after()101 @After public void after() { 102 mockito.finishMocking(); 103 } 104 some_test()105 @Test public void some_test() { 106 assertNotNull(mock); 107 } 108 } 109 110 public static class SessionWithIncorrectMockitoUsage { 111 @Mock IMethods mock; 112 113 MockitoSession mockito = Mockito.mockitoSession().initMocks(this).startMocking(); 114 after()115 @After public void after() { 116 mockito.finishMocking(); 117 } 118 unfinished_stubbing()119 @Test public void unfinished_stubbing() { 120 when(mock.simpleMethod()); 121 } 122 } 123 124 public static class SessionWithTestFailureAndIncorrectMockitoUsage { 125 @Mock IMethods mock; 126 127 MockitoSession mockito = Mockito.mockitoSession().initMocks(this).startMocking(); 128 after()129 @After public void after() { 130 mockito.finishMocking(); 131 } 132 unfinished_stubbing_with_other_failure()133 @Test public void unfinished_stubbing_with_other_failure() { 134 when(mock.simpleMethod()); 135 assertTrue(false); 136 } 137 } 138 } 139