Mock(Mockito)单元测试实战
文章目录
- 1、什么是Mock?
- 1.1、 Mockito中文文档
- 1.2、Mockito基本使用方法简介
- 初始化MockMvc对象(BaseUnitTest)
- 初始化Mock框架
- 测试方法
- 2.0 mock实践
- 测试类继承 BaseUnitTest
- 注入测试类及mock远程调用
- 添加mock注解初始化
- 测试方法
- 类型一 :map
- 类型二 :DTO对象
- 类型三:返回map集合
- 类型四:信息加解密
- 类型五:缓存get/put
1、什么是Mock?
mock是在测试过程中,对于一些不容易构造/获取的对象,创建一个mock对象来模拟对象的行为。Mock就是可以给你制造任何你想要的对象,分层测试,你可以只测试controller或者service,而不需要牵扯到下层的调用,这样的话,测试就变得容易了。假设你的接口,有500种不同的返回结果,你要制造这500种返回结果来提高覆盖率
当你进行controller层的测试的时候,需要Mock掉service层
@Mock
private RouteServiceImpl routeService;
然后,你可以返回自己设置的、想要的、任意的内容,list是我期望返回的内容when(routeService.selectByRouteId(any())).thenReturn(list);
Mock有很多的实现框架,例如Mockito、EasyMock、Jmockit、PowerMock、Spock等等,SpringBoot默认的Mock框架是Mockito,和junit一样,只需要依赖spring-boot-starter-test就可以了。本文代码基于jdk8、junit4、Mockito3
1.1、 Mockito中文文档
Mockito是mocking框架,它让你用简洁的API做测试。而且Mockito简单易学,它可读性强和验证语法简洁。Mockito是GitHub上使用最广泛的Mock框架,并与JUnit结合使用.Mockito框架可以创建和配置mock对象.使用Mockito简化了具有外部依赖的类的测试开发!
中文文档
1.2、Mockito基本使用方法简介
对于前后端分离的项目而言,无法直接从前端静态代码中测试接口的正确性,因此可以通过MockMVC来模拟HTTP请求。基于RESTful风格的SpringMVC的测试,我们可以测试完整的Spring MVC流程,即从URL请求到控制器处理,再到视图渲染都可以测试。
初始化MockMvc对象(BaseUnitTest)
1)导包
- xxTest 继承 BaseUnitTest
2)测试(只测试public的方法)
//对目标测试类加@InjectMocks注解
@InjectMocks:创建一个实例,其余用@Mock(或@Spy)注解创建的mock将被注入到用该实例中。
//对目标测试类的依赖属性使用@mock创建依赖
公共变量
static String Key = “xxx”;
初始化Mock框架
公共开关抽取
Mockito.when(cacheFatctoryUtil.getJWIString(CacheConsts.JVM.TEST_KEY)).thenReturn(key);
测试方法
@Test
public void test方法名() throws Exception {//给方法参数赋值
String name = "aa";
//模拟支持视频的类型
Mockito.doReturn(",mp4,").when(cacheFactoryUtil).getJVMString(CacheConsts.JVM.VIDEO_TYPES);//模拟视频截图出参
Response response = Mockito.mock(Response.class);
Result result = Mockito.mock(Result.class);
Result.Bean resultBean = new Result.Bean();//Result.Bean<String> resultBean = new Result.Bean<>();
resultBean.put("name","1");
resultBean.put("age","18");
Mockito.doReturn(response).when(远程调用服务).方法(Mockito.anyString(),Mockito.ang(Map.clas));//Mockito.doReturn(JSON.toJSONString(result)).when(result).toJSONString();
Mockito.doReturn(result).when(response).getResult();
Mockito.doReturn("0000" ).when(result).getReturnCode();
Mockito.doReturn("success").when(result).getReturnMessage();
Mockito.doReturn(resultBean).when(result).getBean();
//
//测试类中调用的别的方法 和需要赋值的参数
//
//进入需要测试的类的测试方法
xxxServer.方法名(方法参数);
}
2.0 mock实践
测试类继承 BaseUnitTest
(测试时可先注释,提高启动项目速度)
注入测试类及mock远程调用
@Autowired
@InjectMocks
private Xxxserver xxserver;@Mock
private XxxSV xxxSV;
添加mock注解初始化
测试方法
类型一 :map
类型二 :DTO对象
只需set
DTO对象
类型三:返回map集合
测试时只需 new 一个Map集合,put需要的值 返回这个Map集合即可
类型四:信息加解密
加密信息
des.decrypt();
解密
类型五:缓存get/put
put2Cache(Boolean )
Mockito.doReturn(true).when(cacheServiceHanager).put2Cache(Mockito.anyString()```[添加链接描述](https://mp.weixin.qq.com/s/rQRO2SaqhQImQlnA5NsEQw)
#### 类型六:List<DO>
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200930143920171.png#pic_center)## Mockito 一个优秀的 Mock 测试框架[Mockito 一个优秀的 Mock 测试框架](https://mp.weixin.qq.com/s/rQRO2SaqhQImQlnA5NsEQw)
Mock(Mockito)单元测试实战相关推荐
- mockito 单元测试_使用FizzBuzz和Mockito进行单元测试
mockito 单元测试 我有时使用FizzBuzz向新手演示单元测试的基础. 尽管FizzBuzz确实是一个简单的问题,但它也可以用于演示更高级的单元测试技术,例如模拟 . FizzBu ...
- mockito单元测试示例_Mockito模拟示例
mockito单元测试示例 Mockito mocking framework provides different ways to mock a class. Let's look at diffe ...
- linux打桩数框架,Mockito 单元测试打桩神器
last modified by coder4 , 2019/08/30 18:34:26 Mockito 单元测试打桩神器 单元测试 软件测试是软件质量保证的关健环节,代表了需求.设计和编码的最终检 ...
- 记录学习Mockito单元测试的坑——空指针异常
记录学习Mockito单元测试的坑--空指针异常 情况一 mockito-all依赖和mockito-core依赖同时引用时,可能会报空指针异常 正确引用 <!--导入junit单元测试依赖-- ...
- 带你读懂mock测试——单元测试实践篇
1.什么是mock测试? Mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取的比较复杂的对象,用一个虚拟的对象(Mock 对象)来创建以便测试的测试方法. 2.为什么要进行Mock测试? ...
- Springboot单元测试mysql_Springboot Mybatis-Plus数据库单元测试实战(三种方式)
单元测试长久以来是热门话题,本文不会讨论需不需要写单测,可以看看参考资料1,我个人认为写好单测应该是每个优秀开发者必备的技能,关于写单测的好处在这里我就不展开讨论了,快速进入本文着重讨论的话题,如何写 ...
- 【全面解析Mock】Mock在单元测试中扮演一个什么角色?
目录 一.Mock在单元测试中扮演一个什么角色 二.测试准备 三.使用Mock的理由 四.使用Python Mock 五.MagicMock类 六.mock.create_autospce 七.moc ...
- TestNG单元测试实战
TestNG单元测试实战 单元测试是什么 对软件中最小可测试单元进行验证.小到一个方法,大到一个类.一个模块.都可以用单元测试覆盖. 单元测试有必要写吗 现状: 面对日复一日排满的需求,没有时间去写. ...
- mockito mock void方法_一文让你快速上手 Mockito 单元测试框架(上)
作者|mghio 编辑|包包 前言 在计算机编程中,单元测试是一种软件测试方法,通过该方法可以测试源代码的各个单元功能是否适合使用.为代码编写单元测试有很多好处,包括可以及早的发现代码错误,促进更改 ...
最新文章
- 全球首次!中国黑客通过安全漏洞远程攻破特斯拉,可在行驶中“帮”你刹车...
- 2020年数学与计算机科学奖获得者,2020 数学与计算机科学奖 获奖人 —— 彭实戈 - 未来科学大奖...
- python提示错误TypeError: write() argument must be str, not bytes
- Netty实战 IM即时通讯系统(六)实战: 客户端和服务端双向通信
- Can't connect to MySQL server on 'localhost' (1...
- 洛谷 1297 [国家集训队]单选错位——期望
- Bzoj4199:[NOI2015]品酒大会
- [转载] python笔记
- linux dd来加载驱动,linux 加载raid驱动
- mysql数据库p_PbootCMS Sqlite数据库转Mysql数据库教程
- 【SVL官方说明文档】
- 原生js写网页下拉菜单
- 上海浦东机场的wifi使用攻略
- DeprecationWarning: Seeding based on hashing is deprecated since Python 3.9
- 企立方-拼多多采集注意的点有哪些
- php获取蓝凑云文件列表,蓝奏云网盘登录获取文件例程
- AutoLayout进阶篇
- ppt模板有哪些网站
- 对网页游戏《卧龙吟》的分析3-----预登陆flash的源代码分析
- UBLOX F9P搭建NtripCaster组建RTK
热门文章
- 【文件共享】nfs和samba都有什么区别
- IOC(概念和原理)
- cookie,sessionStorage 和 localStorage 的区别 cookie弊端
- impala 执行计划详解
- 《WEB前端框架开发技术》HTML5响应式旅游景区网站设计与实现——榆林子州HTML+CSS+JavaScript
- Web前端入门 HTML
- 美团琴鸟 Lyrebird 工具 (接口 mock 类)
- 使用阿里巴巴提供的约束规范
- Java安装系列之mysql+sqlyong安装
- c语言查询学号(字符串),如何用C语言编写自己的姓名和学号