• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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