• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2017 Mockito contributors
3  * This program is made available under the terms of the MIT License.
4  */
5 package org.mockitousage.junitrunner;
6 
7 import static org.junit.Assert.assertEquals;
8 import static org.mockito.Mockito.mock;
9 import static org.mockito.Mockito.times;
10 import static org.mockito.Mockito.verify;
11 import static org.mockito.Mockito.when;
12 
13 import java.util.List;
14 
15 import org.junit.Test;
16 import org.junit.runner.JUnitCore;
17 import org.junit.runner.Result;
18 import org.junit.runner.RunWith;
19 import org.mockito.Mock;
20 import org.mockito.exceptions.misusing.UnfinishedStubbingException;
21 import org.mockito.exceptions.verification.TooFewActualInvocations;
22 import org.mockito.junit.MockitoJUnitRunner;
23 import org.mockitousage.IMethods;
24 import org.mockitoutil.JUnitResultAssert;
25 import org.mockitoutil.TestBase;
26 
27 public class SilentRunnerTest extends TestBase {
28 
29     JUnitCore runner = new JUnitCore();
30 
31     @Test
passing_test()32     public void passing_test() {
33         // when
34         Result result = runner.run(SomeFeature.class);
35         // then
36         JUnitResultAssert.assertThat(result).isSuccessful();
37     }
38 
39     @Test
failing_test()40     public void failing_test() {
41         // when
42         Result result = runner.run(SomeFailingFeature.class);
43         // then
44         JUnitResultAssert.assertThat(result).fails(1, TooFewActualInvocations.class);
45     }
46 
47     @Test
failing_test_in_constructor()48     public void failing_test_in_constructor() {
49         // when
50         Result result = runner.run(FailsInConstructor.class);
51         // then
52         JUnitResultAssert.assertThat(result).fails(1, IllegalArgumentException.class);
53     }
54 
55     @Test
validates_framework_usage()56     public void validates_framework_usage() {
57         // when
58         Result result = runner.run(UsesFrameworkIncorrectly.class);
59         // then
60         JUnitResultAssert.assertThat(result)
61                 .fails(1, "unfinished_stubbing_test_method", UnfinishedStubbingException.class);
62     }
63 
64     @Test
ignores_unused_stubs()65     public void ignores_unused_stubs() {
66         JUnitCore runner = new JUnitCore();
67         // when
68         Result result = runner.run(HasUnnecessaryStubs.class);
69         // then
70         JUnitResultAssert.assertThat(result).isSuccessful();
71     }
72 
73     @RunWith(MockitoJUnitRunner.Silent.class)
74     public static class SomeFeature {
75         @Mock List<String> list;
76 
77         @Test
some_behavior()78         public void some_behavior() {
79             when(list.get(0)).thenReturn("0");
80             assertEquals("0", list.get(0));
81         }
82     }
83 
84     @RunWith(MockitoJUnitRunner.Silent.class)
85     public static class SomeFailingFeature {
86         @Mock List<String> list;
87 
88         @Test
some_failing_behavior()89         public void some_failing_behavior() {
90             list.clear();
91             verify(list, times(2)).clear();
92         }
93     }
94 
95     @RunWith(MockitoJUnitRunner.Silent.class)
96     public static class FailsInConstructor {
97         {
98             if (System.currentTimeMillis() > 0) {
99                 throw new IllegalArgumentException("Boo!");
100             }
101         }
102 
103         @Mock List<String> list;
104 
105         @Test
some_behavior()106         public void some_behavior() {}
107     }
108 
109     @RunWith(MockitoJUnitRunner.Silent.class)
110     public static class UsesFrameworkIncorrectly {
111         @Mock List<?> list;
112 
113         @SuppressWarnings({"MockitoUsage", "CheckReturnValue"})
114         @Test
unfinished_stubbing_test_method()115         public void unfinished_stubbing_test_method() {
116             when(list.get(0)); // unfinished stubbing
117         }
118     }
119 
120     /**
121      * The test class itself is passing but it has some unnecessary stubs
122      */
123     @RunWith(MockitoJUnitRunner.Silent.class)
124     public static class HasUnnecessaryStubs {
125         IMethods mock1 = when(mock(IMethods.class).simpleMethod(1)).thenReturn("1").getMock();
126         IMethods mock2 = when(mock(IMethods.class).simpleMethod(2)).thenReturn("2").getMock();
127         IMethods mock3 = when(mock(IMethods.class).simpleMethod(3)).thenReturn("3").getMock();
128 
129         @Test
usesStub()130         public void usesStub() {
131             assertEquals("1", mock1.simpleMethod(1));
132         }
133 
134         @Test
usesStubWithDifferentArg()135         public void usesStubWithDifferentArg() {
136             assertEquals(null, mock2.simpleMethod(200));
137             assertEquals(null, mock3.simpleMethod(300));
138         }
139     }
140 }
141