1 /*
2  * Copyright (c) 2007 Mockito contributors
3  * This program is made available under the terms of the MIT License.
4  */
5 
6 package org.mockitousage.misuse;
7 
8 import org.junit.Test;
9 import org.mockito.Mock;
10 import org.mockito.exceptions.base.MockitoException;
11 import org.mockito.exceptions.misusing.NotAMockException;
12 import org.mockito.exceptions.misusing.NullInsteadOfMockException;
13 import org.mockitousage.IMethods;
14 import org.mockitoutil.TestBase;
15 
16 import static org.mockito.Mockito.*;
17 
18 public class DescriptiveMessagesOnMisuseTest extends TestBase {
19 
20     @Mock private IMethods mock;
21 
22     class Foo {
finalMethod()23         public final String finalMethod() {
24             return null;
25         }
26     }
27 
28     @SuppressWarnings("all")
29     @Test
tryDescriptiveMessagesOnMisuse()30     public void tryDescriptiveMessagesOnMisuse() {
31         Foo foo = mock(Foo.class);
32 
33 //        when(foo.finalMethod()).thenReturn("foo");
34 //        doReturn("foo").when(foo).finalMethod();
35 //        verify(foo).finalMethod();
36 
37 //        doReturn("foo");
38 //        doReturn("bar");
39 
40 //        verifyNoMoreInteractions();
41 //        verifyNoMoreInteractions(null);
42 //        verifyNoMoreInteractions("");
43 //        verifyZeroInteractions();
44 //        verifyZeroInteractions(null);
45 //        verifyZeroInteractions("");
46 //
47 //        inOrder();
48 //        inOrder(null);
49 //        inOrder("test");
50 //        InOrder inOrder = inOrder(mock(List.class));
51 //        inOrder.verify(mock).simpleMethod();
52 
53 //        verify(null);
54 //        verify(mock.booleanReturningMethod());
55 
56 //        verify(mock).varargs("test", anyString());
57 
58 //        when("x").thenReturn("x");
59 
60 //        when(mock.simpleMethod());
61 //        when(mock.differentMethod()).thenReturn("");
62     }
63 
64     @SuppressWarnings({"MockitoUsage", "CheckReturnValue"})
65     @Test(expected=NotAMockException.class)
shouldScreamWhenWholeMethodPassedToVerify()66     public void shouldScreamWhenWholeMethodPassedToVerify() {
67         verify(mock.booleanReturningMethod());
68     }
69 
70     @Test(expected=NotAMockException.class)
shouldScreamWhenWholeMethodPassedToVerifyNoMoreInteractions()71     public void shouldScreamWhenWholeMethodPassedToVerifyNoMoreInteractions() {
72         verifyNoMoreInteractions(mock.byteReturningMethod());
73     }
74 
75     @SuppressWarnings({"CheckReturnValue", "MockitoUsage"})
76     @Test(expected=NotAMockException.class)
shouldScreamWhenInOrderCreatedWithDodgyMock()77     public void shouldScreamWhenInOrderCreatedWithDodgyMock() {
78         inOrder("not a mock");
79     }
80 
81     @SuppressWarnings({"CheckReturnValue", "MockitoUsage"})
82     @Test(expected=NullInsteadOfMockException.class)
shouldScreamWhenInOrderCreatedWithNulls()83     public void shouldScreamWhenInOrderCreatedWithNulls() {
84         inOrder(mock, null);
85     }
86 
87     @SuppressWarnings({"MockitoUsage", "CheckReturnValue"})
88     @Test(expected=NullInsteadOfMockException.class)
shouldScreamNullPassedToVerify()89     public void shouldScreamNullPassedToVerify() {
90         verify(null);
91     }
92 
93     @Test(expected=NullInsteadOfMockException.class)
shouldScreamWhenNotMockPassedToVerifyNoMoreInteractions()94     public void shouldScreamWhenNotMockPassedToVerifyNoMoreInteractions() {
95         verifyNoMoreInteractions(null, "blah");
96     }
97 
98     @SuppressWarnings("all")
99     @Test(expected=MockitoException.class)
shouldScreamWhenNullPassedToVerifyNoMoreInteractions()100     public void shouldScreamWhenNullPassedToVerifyNoMoreInteractions() {
101         verifyNoMoreInteractions((Object[])null);
102     }
103 }
104