@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