@Test public void testMockito7() { List mockOne = mock(List.class); List mockTwo = mock(List.class); List mockThree = mock(List.class); // mockOne和mockTwo都有调用,mockThree没有 mockOne.add("one"); mockTwo.add("two"); // 普通的调用验证 verify(mockOne).add("one"); // add.("two")从未被调用过 verify(mockOne, never()).add("two"); // 下面的验证会失败,因为mockOne和mockTwo都有调用 verifyZeroInteractions(mockOne, mockTwo); // 下面验证会成功,因为mockThree没有过调用 verifyZeroInteractions(mockOne, mockThree); }
@Test public void testMockito8() { LinkedList mockedList1 = mock(LinkedList.class); LinkedList mockedList2 = mock(LinkedList.class); // using mocks mockedList1.add("one"); mockedList1.add("two"); verify(mockedList1).add("one"); // 下面验证会失败 verifyNoMoreInteractions(mockedList1); // 下面验证会成功 verifyNoMoreInteractions(mockedList2); }
public class ArticleManagerTest extends SampleBaseTestCase { @Mock private ArticleCalculator calculator; @Mock private ArticleDatabase database; @Mock private UserProvider userProvider; private ArticleManager manager; @Before public void setup() { manager = new ArticleManager(userProvider, database, calculator); } } public class SampleBaseTestCase { @Before public void initMocks() { MockitoAnnotations.initMocks(this); } }
@Test public void testMockito10() { LinkedList mock = mock(LinkedList.class); when(mock.get(0)).thenReturn("first").thenReturn("second").thenReturn("third"); // 第一次调用,输出"first" System.out.println(mock.get(0)); // 第二次调用,输出"second" System.out.println(mock.get(0)); // 第三次及以后调用,都输出"third" System.out.println(mock.get(0)); }
@Test public void testMockito11(){ LinkedList mock = mock(LinkedList.class); when(mock.get(0)).thenAnswer(new Answer() { public Object answer(InvocationOnMock invocation) { Object[] args = invocation.getArguments(); Object mock = invocation.getMock(); return "called with arguments: " + args.length; } }); //Following prints "called with arguments: 1" System.out.println(mock.get(0)); }
@Test public void testMockito12() { LinkedList mockedList = mock(LinkedList.class); doThrow(new RuntimeException()).when(mockedList).clear(); // 下面调用会抛异常 mockedList.clear(); }
@Test public void testMockito13() { List list = new LinkedList(); List spy = spy(list); // Spy对象也可以设置期望值 when(spy.size()).thenReturn(100); // 使用spy对象调用真实的方法 spy.add("one"); spy.add("two"); // 输出"one" System.out.println(spy.get(0)); // 由于我们对size设置了期望值,所以下面会输出期望值100 System.out.println(spy.size()); // 验证方法的调用 verify(spy).add("one"); verify(spy).add("two"); }
原文:http://blog.csdn.net/dandan8866/article/details/42875553