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 { 23 public final String finalMethod() { 24 return null; 25 } 26 } 27 28 @SuppressWarnings("all") 29 @Test 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) 66 public void shouldScreamWhenWholeMethodPassedToVerify() { 67 verify(mock.booleanReturningMethod()); 68 } 69 70 @Test(expected=NotAMockException.class) 71 public void shouldScreamWhenWholeMethodPassedToVerifyNoMoreInteractions() { 72 verifyNoMoreInteractions(mock.byteReturningMethod()); 73 } 74 75 @SuppressWarnings({"CheckReturnValue", "MockitoUsage"}) 76 @Test(expected=NotAMockException.class) 77 public void shouldScreamWhenInOrderCreatedWithDodgyMock() { 78 inOrder("not a mock"); 79 } 80 81 @SuppressWarnings({"CheckReturnValue", "MockitoUsage"}) 82 @Test(expected=NullInsteadOfMockException.class) 83 public void shouldScreamWhenInOrderCreatedWithNulls() { 84 inOrder(mock, null); 85 } 86 87 @SuppressWarnings({"MockitoUsage", "CheckReturnValue"}) 88 @Test(expected=NullInsteadOfMockException.class) 89 public void shouldScreamNullPassedToVerify() { 90 verify(null); 91 } 92 93 @Test(expected=NullInsteadOfMockException.class) 94 public void shouldScreamWhenNotMockPassedToVerifyNoMoreInteractions() { 95 verifyNoMoreInteractions(null, "blah"); 96 } 97 98 @SuppressWarnings("all") 99 @Test(expected=MockitoException.class) 100 public void shouldScreamWhenNullPassedToVerifyNoMoreInteractions() { 101 verifyNoMoreInteractions((Object[])null); 102 } 103 } 104