Mockito(一) --入门篇
编程技术  /  houtizong 发布于 3年前   72
Mockito是一个针对Java的mocking框架,它与EasyMock和jMock很相似,但是通过在执行后校验什么已经被调用,它消除了对期望 行为(expectations)的需要。其它的mocking库需要你在执行前记录期望行为(expectations),而这导致了丑陋的初始化代码。
Mockito是现在比较流行的mock框架。
什么是mock?说的直白一点,大家都知道unit test应该是尽可能独立的。对一个class的unit test不应该再和其他class有任何交互。
假设现在有一个类,扫描一个目录并将找到的文件都上传到FTP server。该类对于不同的FTP响应(找不到FTP server 或 上传成功,或上传失败),有一些后续操作。在写这个类的UT时,我们就必须虚构出来一个FTP对象。这样在UT中,这个虚构的对象能够代替真正的FTP,对被测试类的调用做出一定的响应。从而知道被测试类是否正确的调用了FTP并做出一些正确的期望的响应,从而达到测试的目的。mock可以模拟各种各样的对象,从而代替真正的对象做出希望的响应。
下面介绍mockito的基本使用方法,我们需要创建一个mock对象来代替真的对象,步骤如下:
第一步:模拟对象,模拟对象使用mock()。
第二步:指定mock对象被调用时的返回值,比如指定让mockFTP对象第一次被调用时返回"找不到FTP server",这一步一般称为stubbing。一般是when(mockedList.get(0)).thenReturn("first")的样子。
第三步:验证被测试类是否正确工作是第三步,使用verify(),例如,验证当mockFTP对象返回"找不到FTP server"时,测试代码是否按要求重试。
一.引入mockito相关的类
import org.mockito.InjectMocks;import org.mockito.Mock;import org.mockito.Mockito;import org.mockito.MockitoAnnotations;对于times、verify、when等,需通过如下静态方式引入
import static org.mockito.Mockito.times;import static org.mockito.Mockito.verify;import static org.mockito.Mockito.when;二.模拟对象
// 模拟LinkedList 的对象 LinkedList mockedList = mock(LinkedList.class); // 此时调用get方法,是会返回null,因为还没有对方法调用的返回值做模拟 System.out.println(mockedList.get(999));三. 模拟方法调用的返回值
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成
网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];
文章归档
文章标签
友情链接