单元测试mockito
参考了http://qiuguo0205.iteye.com/blog/1456528 的博客,谢谢!
1、验证动作,我调用了哪些方法。
List<String> mockedList = mock(List.class);
mockedList.add("one");
verify(mockedList).add("one");
相反的,还有没有调用哪些方法
verify(mockedList,never()).add("one");
2、模拟一个接口,正常实现一个接口很麻烦的,但使用mockito,可以轻易实现
List mockedList = mock(List.class);
when(mockedList.get(0)).thenReturn("first");
System.out.println(mockedList.get(0));
如果你说我多次调用,返回不一样的值
when(mockedList.get(1)).thenReturn("two").thenReturn("two1");
System.out.println(mockedList.get(1));
System.out.println(mockedList.get(1));
这个功能设计的,我无法形容,可以想想一个程序员被需求逼到什么程度。太佩服这哥们的脑子了!
3、验证各种动作
List<String> mockedList = mock(List.class);
// using mock
mockedList.add("once");
mockedList.add("twice");
mockedList.add("twice");
mockedList.add("three times");
mockedList.add("three times");
mockedList.add("three times");
mockedList.add("five times");
mockedList.add("five times");
verify(mockedList).add("once");//验证.add("once")动作
verify(mockedList, times(1)).add("once");//验证.add("once")动作发生一次。
verify(mockedList, times(2)).add("twice");//两次
verify(mockedList, times(3)).add("three times");//三此
verify(mockedList, never()).add("never happened"); //从来没干过
verify(mockedList, atLeastOnce()).add("three times");//最少一次
verify(mockedList, atLeast(2)).add("five times");//最少两次
verify(mockedList, atMost(5)).add("three times");//最多5次
4、伪造值
List list = new LinkedList();
List spy = spy(list);
when(spy.size()).thenReturn(100);
System.out.println(spy.get(0));
5、伪造动作
List mockedList = mock(LinkedList.class ) ;
doThrow(new RuntimeException()).when(mockedList).clear(); //当调用clear()时,抛个异常
mockedList.clear();