Java之ut,mock与jacoco
因powermock的@PrepareForTest()注解中的Javassist与jacoco的覆盖检测机制相冲突,所以会出现覆盖率始终为0的情况。所以需要mock静态方法时,可以采用mockito3.4.0(3.4.0以上都可以)搭配jacoco进行ut测试。下面的示例仅供参考:
@RunWith(MockitoJUnitRunner.class)
public class IpUtilsTest
{//带参数且有特殊返回值的的静态方法@Testpublic void test3() throws UnknownHostException{try(MockedStatic<StringUtils> mockedStatic = Mockito.mockStatic(StringUtils.class)){OngoingStubbing<Boolean> stubbing = mockedStatic.when(()->StringUtils.isNotBlank(ArgumentMatchers.any()));stubbing.thenReturn(true);String res = IpUtils.getHostAddress();Assert.assertNull(res);}}//带参数的静态方法@Testpublic void queryTest_1() throws Exception{try(MockedStatic<RestResponse> mockedStatic = Mockito.mockStatic(RestResponse.class)){mockedStatic.when(()->RestResponse.err(anyInt(), anyString())).thenReturn(response);PowerMockito.when(backupConfigService.getByDbType(Mockito.anyInt())).thenThrow(new BadSqlGrammarException("", "", new SQLException()));resource.query(1);}}
}
@RunWith(MockitoJUnitRunner.class)
public class IpUtilsTest
{//不带参数的静态方法@Testpublic void test() throws UnknownHostException{try(MockedStatic<InetAddress> mockedStatic = Mockito.mockStatic(InetAddress.class)){mockedStatic.when(InetAddress::getLocalHost).thenThrow(UnknownHostException.class);String res = IpUtils.getHostAddress();Assert.assertNotNull(res);}}@Testpublic void test12() throws UnknownHostException{try(MockedStatic<SrvpIpUtils> mockedStatic = Mockito.mockStatic(SrvpIpUtils.class)){mockedStatic.when(SrvpIpUtils::getNetApiIp).thenReturn("111.111.111.111");String res = IpUtils.getHostAddress();assertEquals("111.111.111.111",res);}}
}
<dependency><groupId>org.mockito</groupId><artifactId>mockito-core</artifactId><version>3.8.0</version><scope>test</scope>
</dependency>
<dependency><groupId>org.mockito</groupId><artifactId>mockito-inline</artifactId><version>3.8.0</version><scope>test</scope>
</dependency>
Java之ut,mock与jacoco相关推荐
- Java单元测试(Junit+Mock+代码覆盖率)
单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复.改进 ...
- java单元测试之mock篇
java单元测试之mock篇 一.什么是mock? 二.为什么要进行mock? 三.IDEA中使用Mock 3.1.引入mock所需依赖 3.1.IDEA单元测试必备快捷键 3.2.Mock测试相关注 ...
- Android mock单例对象,如何对Java单例模式进行mock
最近刚开始转行到Java编程,项目使用的是Junit4框架.其中遇到了采用单例模式(饿汉)实现的Java代码,那么如何对该类中的方法进行模拟呢?因为该模式下所有的共有方法都是通过获取该类的静态私有实例 ...
- Java mock客户端数据_CatMock: Java 下使用 mock.js 生成虚拟数据
CatMock CatMock 是一个mock.js的 Java 封装库.使用 JDK 自带的 js 脚本引擎直接调用 mock.js 脚本,实现对 mock.js 的统一. 为什么采用这样的方案? ...
- java的单元测试-mock测试
文章目录 简介 Assert mockMVC 优化 mockBean(模拟bean和测试接口) 简介 对于普通的方法,通常采用断言测试. 对于接口,需要使用mockMvc 对于未开发的功能,需要moc ...
- Java单元测试之Mock框架
一.引言 二.为什么要用Mock 三.Mock使用场景 四.Mock定义 五.Mock框架 五.Mockito 5.1 Mockito基本使用 5.2 MockMVC测试 5.2.1 初始化MockM ...
- Java单元测试使用mock【转载】
1.什么是Mock? mock是在测试过程中,对于一些不容易构造/获取的对象,创建一个mock对象来模拟对象的行为.比如说你需要调用B服务,可是B服务还没有开发完成,那么你就可以将调用B服务的那部分给 ...
- java单元测试之Mock测试编写
mock框架官方文档地址:https://javadoc.io/static/org.mockito/mockito-core/3.2.0/org/mockito/Mockito.html#verif ...
- java mock verify_使用Mockito进行单元测试【1】——mock and verify[转]
本文转自:http://qiuguo0205.iteye.com/blog/1443344 1. 为什么使用Mockito来进行单元测试? 回答这个问题需要回答两个方面,第一个是为什么使用mock?m ...
最新文章
- java gui 案例_JavaGui入门—布局的嵌套使用附实例
- Git 合并两个不同的仓库
- 结对编程(黄金点游戏)
- 从 ThreadLocal 到 AsyncLocal
- 【渝粤题库】陕西师范大学200221 中国思想史 作业(高起专)
- Python之编写登陆接口
- java 捕获 nullpointerexception,Java 空检查链与捕获NullPointerException
- vos3000下载java_昆石VOS3000_2.1.4.0完整安装包及安装脚本
- qpsk matlab仿真,QPSK 调制与解调(Matlab仿真)
- Window10下修改User文件夹中的 用户文件夹 名称
- sumif单列求和_求和、单条件求和、多条件求和、隔列求和等实用技巧解读
- SpringBoot 发送邮件和附件(实用版)
- Excel查询A列中的数据是否在B中存在
- 天正的计算机快捷命令大全,天正建筑快捷键命令大全 2
- css所有属性大合集,包含中文标题
- Jugglefest
- Davinci DM6446开发攻略——DSP开发工程建立
- 如何使用网线连接树莓派和电脑
- uni-app的灰朦层取消滑动以及官方弹出框设计代码
- Java 使用dcm4che的工具类findscu查询pacs数据
热门文章
- 石墨计算机,石墨文档电脑版
- 百度步行导航加poi搜索android,Android Studio百度地图路线规划以及POI搜索功能的实现...
- Notice your ways of studing
- 比例阀为什么需要比例阀放大器
- Servlet.service() for servlet SpringMVC threw exception ---- java.lang.NullPointerException
- Docker构建harbor+IDEA,一篇文章就够了
- 学大数据要学哪些算法_大数据专业是学什么?
- 10-38 A4-7在订单详细信息表中查找包含产品种类数超过特定值的订单信息 (20 分)
- 反转链表-就地逆置法
- [bzoj1022] [SHOI2008]小约翰的游戏John