/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockitousage.stacktrace; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.InOrder; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.mockitousage.IMethods; import org.mockitoutil.TestBase; import java.util.LinkedList; import java.util.List; import static org.mockito.Mockito.*; @Ignore @RunWith(MockitoJUnitRunner.class) public class ModellingDescriptiveMessagesTest extends TestBase { @Mock private IMethods mock; @Before public void cleanStackTrace() { super.makeStackTracesClean(); } @Test public void makeSureStateIsValidatedInTheVeryFirstTestThanksToTheRunner() { //mess up the state: verify(mock); } @Test public void shouldSayWantedButNotInvoked() { verify(mock).otherMethod(); } @Test public void shouldPointOutInteractionsOnMockWhenOrdinaryVerificationFails() { mock.otherMethod(); mock.booleanObjectReturningMethod(); verify(mock).simpleMethod(); } @Test public void shouldShowActualAndExpected() { mock.simpleMethod("blah"); verify(mock).simpleMethod(); } @Test public void shouldSayTooLittleInvocations() { mock.simpleMethod(); verify(mock, times(2)).simpleMethod(); } @Test public void shouldSayTooManyInvocations() { mock.simpleMethod(); mock.simpleMethod(); verify(mock, times(1)).simpleMethod(); } @Test public void shouldSayWantedButNotInvokedInOrder() { mock.simpleMethod(); mock.otherMethod(); InOrder inOrder = inOrder(mock); inOrder.verify(mock).otherMethod(); inOrder.verify(mock).simpleMethod(); } @Test public void shouldSayTooLittleInvocationsInOrder() { mock.simpleMethod(); mock.otherMethod(); mock.otherMethod(); InOrder inOrder = inOrder(mock); inOrder.verify(mock).simpleMethod(); inOrder.verify(mock, times(3)).otherMethod(); } @Test public void shouldSayTooManyInvocationsInOrder() { mock.otherMethod(); mock.otherMethod(); InOrder inOrder = inOrder(mock); inOrder.verify(mock, times(1)).otherMethod(); } @Test public void shouldSayNeverWantedButInvokedHere() { mock.otherMethod(); verify(mock, never()).otherMethod(); } @Test public void shouldSayTooLittleInvocationsInAtLeastModeInOrder() { mock.simpleMethod(); InOrder inOrder = inOrder(mock); inOrder.verify(mock, atLeast(2)).simpleMethod(); } @Test public void shouldSayTooLittleInvocationsInAtLeastMode() { mock.simpleMethod(); verify(mock, atLeast(2)).simpleMethod(); } @Test public void shouldSayNoMoreInteractions() { mock.simpleMethod(); verifyNoMoreInteractions(mock); } @Test public void shouldSayUnstubbedMethodWasInvokedHere() { mock = mock(IMethods.class, RETURNS_SMART_NULLS); IMethods m = mock.iMethodsReturningMethod(); m.simpleMethod(); } @Test public void shouldPointOutUnfinishedStubbing() { when(mock.simpleMethod()); verify(mock).simpleMethod(); } @Test public void shouldMentionFinalAndObjectMethodsWhenMissingMockCall() { when("".equals(null)).thenReturn(false); } @Test public void shouldMentionFinalAndObjectMethodsWhenVerifying() { verify(mock).equals(null); verify(mock).simpleMethod(); } @Test public void shouldMentionFinalAndObjectMethodsWhenMisplacedArgumentMatcher() { when(mock.equals(anyObject())).thenReturn(false); } @Test public void shouldShowExampleOfCorrectArgumentCapturing() { ArgumentCaptor<String> argument = ArgumentCaptor.forClass(String.class); argument.capture(); argument.getValue(); } @Test public void shouldScreamWhenNullPassedInsteadOfAnInterface() { mock(IMethods.class, withSettings().extraInterfaces(List.class, null)); } @Test public void shouldScreamWhenNonInterfacePassed() { mock(IMethods.class, withSettings().extraInterfaces(LinkedList.class)); } @Test public void shouldScreamWhenExtraIsTheSame() { mock(IMethods.class, withSettings().extraInterfaces(IMethods.class)); } @Test public void shouldScreamWhenExtraInterfacesEmpty() { mock(IMethods.class, withSettings().extraInterfaces()); } @Test public void shouldScreamWhenExtraInterfacesIsANullArray() { mock(IMethods.class, withSettings().extraInterfaces((Class<?>[]) null)); } @Test public void shouldMentionSpiesWhenVoidMethodIsToldToReturnValue() { List list = mock(List.class); doReturn("foo").when(list).clear(); } }