Home | History | Annotate | Download | only in misuse
      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