Mock利器:PowerMock
powerMock不仅支持接口mock,final类、静态类、静态方法、私有方法都支持mock,还是很强大的;
1.gradle引用:
myonlycompile('org.powermock:powermock-module-junit4:1.6.4')
myonlycompile('org.powermock:powermock-api-mockito:1.6.4')
2.测试代码
@RunWith(PowerMockRunner.class)
@PrepareForTest(mockTest.FinalUser.class)
public class mockTest {
@Test
public void testMockInterface() {
IService svc = PowerMockito.mock(IService.class);
PowerMockito.when(svc.getMsg("aa")).thenReturn("my name is aa"); assertEquals("my name is aa", svc.getMsg("aa"));
} @Test
public void testMockClass() {
User user = PowerMockito.mock(User.class);
PowerMockito.when(user.getCount()).thenReturn(5);
assertEquals(5, user.getCount());
} @Test
public void testMockFinalClass() {
FinalUser user = PowerMockito.mock(FinalUser.class);
PowerMockito.when(user.getCount()).thenReturn(5);
assertEquals(5, user.getCount()); PowerMockito.when(user.getNum()).thenReturn(8);
assertEquals(8, user.getNum());
} @Test
public void testMockStaticClass() {
PowerMockito.mockStatic(FinalUser.class);
PowerMockito.when(FinalUser.getName()).thenReturn("MY");
assertEquals("MY", FinalUser.getName());
} static interface IService {
String getMsg(String msg); void addMsg(String msg);
} static class User {
private String name; public int getCount() {
throw new NotImplementedException();
}
} static final class FinalUser {
private String name; public static String getName() {
throw new NotImplementedException();
} public int getCount() {
throw new NotImplementedException();
} private int getNum(){
throw new NotImplementedException();
}
}
}
如果是静态类、方法、final类、私有方法的需要加上
@RunWith(PowerMockRunner.class)
@PrepareForTest(mockTest.FinalUser.class)
Mock利器:PowerMock的更多相关文章
- mock测试之powermock
由于公司框架依赖别的模块, 导致我们开发老是需要跟着他们的脚步, 所以我的上级领导提出这个方案说直接跳过他们,我们自己在本地测试,然后就找了它, 导入相关jar <dependency> ...
- Mock、Powermock使用汇总
背景 工作中经常用到单测,某对单测掌握的不好,所以趁此学习.总结一下. 主要参考:https://www.jianshu.com/p/0c2480b1709e.https://www.cnblogs. ...
- 前端mock利器:randomjson
randomjson的应用场景 前后端分离时,前端根据后端提供的数据模型模拟后端请求.如果数据写死,每次返回的都一样,这个时候randomjson就能派上用场了.在前端规定数据类型,每次用random ...
- 有效使用Mock编写java单元测试
Java单元测试对于开发人员质量保证至关重要,尤其当面对一团乱码的遗留代码时,没有高覆盖率的单元测试做保障,没人敢轻易对代码进行重构.然而单元测试的编写也不是一件容易的事情,除非使用TDD方式,否则编 ...
- 什么是 Mock 测试?
什么是 Mock? 作为动词,Mock 是模拟.模仿的意思. 作为名词,Mock 是能够模仿真实对象行为的模拟对象. 那么,在软件测试中,Mock 所模拟的对象是什么呢? 模拟的是 SUT(Syste ...
- 推荐一款数据mock框架,无需任何依赖,贼牛逼
fox-mock 是基于Java Agent实现的自测,联调Mock利器.能解决你的这些问题: 开发过程中,依赖了下游多个接口,想跑个单测都必须得等下游把服务部署好 联调过程中,下游某个接口出问题,阻 ...
- Android单元测试与模拟测试详解
测试与基本规范 为什么需要测试? 为了稳定性,能够明确的了解是否正确的完成开发. 更加易于维护,能够在修改代码后保证功能不被破坏. 集成一些工具,规范开发规范,使得代码更加稳定( 如通过 phabri ...
- 8点了解Java服务端单元测试
一. 前言 单元测试并不只是为了验证你当前所写的代码是否存在问题,更为重要的是它可以很大程度的保障日后因业务变更.修复Bug或重构等引起的代码变更而导致(或新增)的风险. 同时将单元测试提前到编写正式 ...
- Mock之easymock, powermock, and mockito
easymock, powermock, and mockito Easymock Class Mocking Limitations To be coherent with interface mo ...
随机推荐
- GG中obey命令的使用
obey命令的使用. 我们能够将一些在GGSCI命令行工具中输入的命令,放到一个文件里. 比如将以下的命令,放到direnv/db.oby文件里. ADD EXTRACT d_ncbs, EXTTRA ...
- STS(Spring Tool Suite)创建maven项目
右键菜单选择新建->maven项目 自己创建存放配置文件需要使用的maven文件夹
- Linux命令-压缩解压命令:zip、unzip
zip [选项] [压缩后文件名] [压缩前的文件或者目录名称] -r表示压缩目录(recursion 递归) rm -rf * 删除当前目录下面的所有文件,也包括目录和子目录ls cp /etc/s ...
- CentOS 7.1重启后无法进入Gnome
问题环境: 新买的Intel NUC主机,通过光驱安装CentOS 7.1版本,安装过程没问题. 安装完毕后,重启. 坏了! 只能看到黑屏和一只可以移动的鼠标. 只能说说我的排查思路: 一.首先要进入 ...
- C#基础—不安全代码(unsafe code)
1.为何要有unsafe 也许是为了实现CLR类型安全的目标吧,默认情况下,C#没有提供指针的使用算法,但是有些情况下也可能需要指针这样直接访问内存的东西(虽然目前我还没有用过),但是有时候程序员非常 ...
- Win10 环境安装tesseract-ocr 4.00并配置环境变量
Tesseract-OCR的Training简明教程 https://blog.csdn.net/blueheart20/article/details/53207176 一.安装: 选择对应版本,h ...
- for循环中 i++和++i 是否有区别?
正常情况下 i++和++i是有区别的: 前者是:先引用,后增加, 后者是:先增加,后引用, 但是在for循环中: for(var i=0;i<10;i++){ System.out.print ...
- Redis(七):Jedis简介和集群
Jedis简介 1.Jedis 是Redis 客户端工具jar2.使用非集群版示例代码 Jedis jedis = new Jedis("192.168.139.132", 637 ...
- Android学习笔记(八)——显示运行进度对话框
显示运行进度对话框 我们经常有这种经历:运行某一应用程序时.须要等待一会,这时会显示一个进度(Please Wait)对话框,让用户知道操作正在进行. 我们继续在上一篇中的程序中加入代码~ 1.在上一 ...
- 又是一年WWDC,暨回想去年之旅——Part III
前言 无论这篇写到哪里,就以这篇作为结尾,结束这个流水回想系列文了. Computer History Museum 计算机历史博物馆(站点)是在Google旁边,參观Google之前的行程. 记得那 ...