| /* |
| * Copyright (c) 2007 Mockito contributors |
| * This program is made available under the terms of the MIT License. |
| */ |
| |
| package org.mockitousage.misuse; |
| |
| import org.junit.After; |
| import org.junit.Test; |
| import org.mockito.InOrder; |
| import org.mockito.Mock; |
| import org.mockito.exceptions.base.MockitoException; |
| import org.mockito.exceptions.misusing.MissingMethodInvocationException; |
| import org.mockitousage.IMethods; |
| import org.mockitoutil.TestBase; |
| |
| import static org.junit.Assume.assumeFalse; |
| import static org.mockito.Mockito.*; |
| |
| public class InvalidUsageTest extends TestBase { |
| |
| @Mock private IMethods mock; |
| @Mock private IMethods mockTwo; |
| |
| @After |
| public void resetState() { |
| super.resetState(); |
| } |
| |
| @Test(expected=MockitoException.class) |
| public void shouldRequireArgumentsWhenVerifyingNoMoreInteractions() { |
| verifyNoMoreInteractions(); |
| } |
| |
| @Test(expected=MockitoException.class) |
| public void shouldRequireArgumentsWhenVerifyingZeroInteractions() { |
| verifyZeroInteractions(); |
| } |
| |
| @Test(expected=MockitoException.class) |
| public void shouldRequireArgumentsWhenVerifyingNoInteractions() { |
| verifyNoInteractions(); |
| } |
| |
| @Test(expected=MockitoException.class) |
| public void shouldNotCreateInOrderObjectWithoutMocks() { |
| inOrder(); |
| } |
| |
| @Test(expected=MockitoException.class) |
| public void shouldNotAllowVerifyingInOrderUnfamilarMocks() { |
| InOrder inOrder = inOrder(mock); |
| inOrder.verify(mockTwo).simpleMethod(); |
| } |
| |
| @Test(expected=MissingMethodInvocationException.class) |
| public void shouldReportMissingMethodInvocationWhenStubbing() { |
| when(mock.simpleMethod()).thenReturn("this stubbing is required to make sure Stubbable is pulled"); |
| when("".toString()).thenReturn("x"); |
| } |
| |
| @Test(expected=MockitoException.class) |
| public void shouldNotAllowSettingInvalidCheckedException() throws Exception { |
| when(mock.simpleMethod()).thenThrow(new Exception()); |
| } |
| |
| @Test(expected=MockitoException.class) |
| public void shouldNotAllowSettingNullThrowable() throws Exception { |
| when(mock.simpleMethod()).thenThrow(new Throwable[] {null}); |
| } |
| |
| @SuppressWarnings("all") |
| @Test(expected=MockitoException.class) |
| public void shouldNotAllowSettingNullThrowableVararg() throws Exception { |
| when(mock.simpleMethod()).thenThrow((Throwable) null); |
| } |
| |
| @Test(expected=MockitoException.class) |
| public void shouldNotAllowSettingNullConsecutiveThrowable() throws Exception { |
| when(mock.simpleMethod()).thenThrow(new RuntimeException(), null); |
| } |
| |
| final class FinalClass {} |
| |
| @Test(expected=MockitoException.class) |
| public void shouldNotAllowMockingFinalClassesIfDisabled() throws Exception { |
| assumeFalse("Inlining mock allows mocking final classes", mock(FinalClass.class).getClass() == FinalClass.class); |
| } |
| |
| @Test(expected=MockitoException.class) |
| public void shouldNotAllowMockingPrimitves() throws Exception { |
| mock(Integer.TYPE); |
| } |
| |
| interface ObjectLikeInterface { |
| boolean equals(Object o); |
| String toString(); |
| int hashCode(); |
| } |
| |
| @Test |
| public void shouldNotMockObjectMethodsOnInterface() throws Exception { |
| ObjectLikeInterface inter = mock(ObjectLikeInterface.class); |
| |
| inter.equals(null); |
| inter.toString(); |
| inter.hashCode(); |
| |
| verifyZeroInteractions(inter); |
| } |
| |
| @Test |
| public void shouldNotMockObjectMethodsOnInterfaceVerifyNoInteractions() throws Exception { |
| ObjectLikeInterface inter = mock(ObjectLikeInterface.class); |
| |
| inter.equals(null); |
| inter.toString(); |
| inter.hashCode(); |
| |
| verifyNoInteractions(inter); |
| } |
| |
| @Test |
| public void shouldNotMockObjectMethodsOnClass() throws Exception { |
| Object clazz = mock(ObjectLikeInterface.class); |
| |
| clazz.equals(null); |
| clazz.toString(); |
| clazz.hashCode(); |
| |
| verifyZeroInteractions(clazz); |
| } |
| |
| @Test |
| public void shouldNotMockObjectMethodsOnClassVerifyNoInteractions() throws Exception { |
| Object clazz = mock(ObjectLikeInterface.class); |
| |
| clazz.equals(null); |
| clazz.toString(); |
| clazz.hashCode(); |
| |
| verifyNoInteractions(clazz); |
| } |
| } |