/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockitousage.misuse; import org.junit.Test; import org.mockito.Mock; import org.mockito.exceptions.base.MockitoException; import org.mockito.exceptions.misusing.NotAMockException; import org.mockito.exceptions.misusing.NullInsteadOfMockException; import org.mockitousage.IMethods; import org.mockitoutil.TestBase; import static org.mockito.Mockito.*; public class DescriptiveMessagesOnMisuseTest extends TestBase { @Mock private IMethods mock; class Foo { public final String finalMethod() { return null; } } @SuppressWarnings("all") @Test public void tryDescriptiveMessagesOnMisuse() { Foo foo = mock(Foo.class); // when(foo.finalMethod()).thenReturn("foo"); // doReturn("foo").when(foo).finalMethod(); // verify(foo).finalMethod(); // doReturn("foo"); // doReturn("bar"); // verifyNoMoreInteractions(); // verifyNoMoreInteractions(null); // verifyNoMoreInteractions(""); // verifyZeroInteractions(); // verifyZeroInteractions(null); // verifyZeroInteractions(""); // // inOrder(); // inOrder(null); // inOrder("test"); // InOrder inOrder = inOrder(mock(List.class)); // inOrder.verify(mock).simpleMethod(); // verify(null); // verify(mock.booleanReturningMethod()); // verify(mock).varargs("test", anyString()); // when("x").thenReturn("x"); // when(mock.simpleMethod()); // when(mock.differentMethod()).thenReturn(""); } @Test(expected=NotAMockException.class) public void shouldScreamWhenWholeMethodPassedToVerify() { verify(mock.booleanReturningMethod()); } @Test(expected=NotAMockException.class) public void shouldScreamWhenWholeMethodPassedToVerifyNoMoreInteractions() { verifyNoMoreInteractions(mock.byteReturningMethod()); } @Test(expected=NotAMockException.class) public void shouldScreamWhenInOrderCreatedWithDodgyMock() { inOrder("not a mock"); } @Test(expected=NullInsteadOfMockException.class) public void shouldScreamWhenInOrderCreatedWithNulls() { inOrder(mock, null); } @Test(expected=NullInsteadOfMockException.class) public void shouldScreamNullPassedToVerify() { verify(null); } @Test(expected=NullInsteadOfMockException.class) public void shouldScreamWhenNotMockPassedToVerifyNoMoreInteractions() { verifyNoMoreInteractions(null, "blah"); } @SuppressWarnings("all") @Test(expected=MockitoException.class) public void shouldScreamWhenNullPassedToVerifyNoMoreInteractions() { verifyNoMoreInteractions((Object[])null); } }