##前言
Mockito是一个强大的mock工具,本文将重点讲述Mockito中mock与spy的区别
mock与spy的区别
mock跟spy都可以用于模拟对象,区别是mock产生的对象,并不会真正的执行对象的行为,而spy创建的对象,会真的去执行对象的行为
示例:
@TestpublicvoidmockitoTest2(){//生成一个mock对象List<String> mockedList =Mockito.mock(ArrayList.class);//打印mock对象的类名,看看mock对象为何物System.out.println("mock List==========="+mockedList.getClass().getName());//操作mock对象
mockedList.add("one");System.out.println("0 agr:"+mockedList.get(0));System.out.println("10 agr:"+mockedList.get(10));//生成一个spy对象List<String> spyList =Mockito.spy(ArrayList.class);//打印mock对象的类名,看看spy对象为何物System.out.println("spy List============"+spyList.getClass().getName());//操作mock对象
spyList.add("one");System.out.println("0 agr:"+spyList.get(0));System.out.println("10 agr:"+spyList.get(10));}
输出:
mock List===========org.mockito.codegen.ArrayList$MockitoMock$9515960360 agr:null10 agr:null
spy List============org.mockito.codegen.ArrayList$MockitoMock$9515960360 agr:one
java.lang.IndexOutOfBoundsException:Index:10,Size:1
通过代码示例可以看出,对mockedList的操作并没有真正的去执行,而spyList会抛出异常;
版权归原作者 黄小果 所有, 如有侵权,请联系我们删除。