使用Mock进行单元测试
一、第一次做UT,有一些自己的小收获,记录下,顺便希望能够帮助到别人。
二、Mock
mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法
说白了,Mock就是可以给你制造任何你想要的对象,分层测试,你可以只测试controller或者service,而不需要牵扯到下层的调用,这样的话,测试就变得容易了。你可以Mock任何自己想要的资源。
假设你的接口,有500种不同的返回结果,你要制造这500种返回结果来提高覆盖率,那么你会累死在写UT上,但是,你可以Mock让它返回任意值,这样UT覆盖率就会像坐火箭一样,嗖嗖的上升,哈哈哈!!!
1、当你进行controller层的测试的时候,需要Mock掉service层,
例如:
@Mock
private RouteServiceImpl routeService;
然后,你可以返回自己设置的、想要的、任意的内容,list是我期望返回的内容,
when(routeService.selectByRouteId(any())).thenReturn(list);
2、当你进行service层的测试的时候,需要Mock掉Dao(Mapper)层,
例如:
@Mock
private RuleMapper ruleMapper;
任意的大于0的整数是我期望的返回内容,
when(ruleMapper.insertSelective(any())).thenReturn(1);
3、有try/catch的块,需要加
@Test(expected = RuntimeException.class)
写UT之后,感觉代码的编写,会很大程度影响测试的繁简情况。当然,如果你确实是TDD,可能就不需要这样的建议。
1、尽量少用if/else,尤其忌讳嵌套,否则,你的UT肯定会写一大堆,毕竟,要么if,要么else(废话)
2、if里的逻辑,少用&& ||,嵌套多了,分支多的会让你哭的
3、少用static方法,目前我还不会static方法的测试/::</::</::<
4、少用private方法,测试困难,关于私有方法,可以测试调用它的方法。
使用Mock进行单元测试相关推荐
- 【全面解析Mock】Mock在单元测试中扮演一个什么角色?
目录 一.Mock在单元测试中扮演一个什么角色 二.测试准备 三.使用Mock的理由 四.使用Python Mock 五.MagicMock类 六.mock.create_autospce 七.moc ...
- 带你读懂mock测试——单元测试实践篇
1.什么是mock测试? Mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取的比较复杂的对象,用一个虚拟的对象(Mock 对象)来创建以便测试的测试方法. 2.为什么要进行Mock测试? ...
- Mock进行单元测试
文章目录 @InjectMocks 使用 1.Maven 2.创建Mock对象 Spy 我认为比较好的一种方式: Mockito 使用 Mock 对象的行为验证 验证调用次数 Spy 对象验证 中文文 ...
- 如何使用Mock进行单元测试
为什么要使用Mock? Mock 测试就是在测试过程中,创建一个假的对象,避免你为了测试一个方法,却要自行构建整个 Bean 的依赖链. 举个例子: 类 A 需要调用类 B 和类 C,而类 B 和类 ...
- mock 抛出一个异常如何终止_教你使用Mock完成单元测试
更多精彩文章请关注本人微信公众号 1.什么是Mock? mock是在测试过程中,对于一些不容易构造/获取的对象,创建一个mock对象来模拟对象的行为.比如说你需要调用B服务,可是B服务还没有开发完成, ...
- Mock完成单元测试
转自:https://zhuanlan.zhihu.com/p/98074553 1.什么是Mock? mock是在测试过程中,对于一些不容易构造/获取的对象,创建一个mock对象来模拟对象的行为.比 ...
- Go Mock 接口测试 单元测试 极简教程
gomock 是 Google 开源的 Golang 测试框架. GoMock is a mocking framework for the Go programming language.https ...
- Mock和Java单元测试中的Mock框架Mockito介绍
什么是Mock? 在面向对象程序设计中,模拟对象(英语:mock object,也译作模仿对象)是以可控的方式模拟真实对象行为的假的对象.程序员通常创造模拟对象(mock object)来测试其他对象 ...
- 单元测试中使用Mock对象
单元测试中使用Mock对象 单元测试中使用Mock对象 一.简单的替换 二.Mock 对象 三.测试 Servlet 单元测试中使用Mock对象 一.简单的替换 假设在代码中,你调用你自己的 getT ...
最新文章
- kernel笔记——块I/O
- 微课视频小学用计算机画画,初识电脑绘画
- python 向量_关于Python中的向量相加和numpy中的向量相加效率对比
- leetcode 104. Maximum Depth of Binary Tree
- scp选择二进制_二进制传输与文本传输区别
- Java代理设计模式(Proxy)的具体实现:静态代理和动态代理
- mysql 层_mysql各个层面优化
- FFMPEG结构体分析:AVPacket
- Java面试应该准备的知识点系列一
- 《卫星通信》课程大作业——基于MATLAB的无线通信链路级仿真
- mysql-cluster安装与配置
- feapder爬虫框架使用
- make menuconfig错误——make[2]: *** [scripts/kconfig/lexer.lex.c] 错误 127
- FC-AE-ASM节点卡(支持 FC-AE-ASM 协议)
- Shopee申请开店需要审核吗?
- 这就是2020:全球云计算十一大年度话题盘点
- 手动可以执行脚本,crontab执行失败,可能和环境变量有关(如果涉及到环境变量)
- 服务熔断 Hystrix
- 刷脸支付只是开端 浅谈3D视觉如何推进新零售崛起
- PPT设计的四大基本原则(亲密性)