之前项目中都是使用PowerMock的mockStatic和whenNew来mock 静态方法和构造函数。但是在升级jdk17的过程中发现PowerMock已停止维护且不支持jdk17,我们转而将Mockito升级,使用Mockito中提供的Mockito.mockStatic, Mockito.mockConstruction

Mockito.mockStatic

首先来看一下较为简单的mockStatic方法
第一步先声明一个MockedStatic对象

MockedStatic<StringUtil> mockedStatic = Mockito.mockStatic(StringUtil.class);

第二步声明对应的行为

//1 官方推荐
mockedStatic.when(() -> StringUtil.someMethod()).thenReturn(someObject);//2
Mockito.when(StringUtil.someMethod()).thenReturn(someObject);

这里1和2两种方式都有效,但是方式1是官方文档中的做法,方式2也许在未来某个时段会失效。
第三步,关闭mockedStatic

mockedStatic.close()

这里一定要注意,这是Mockito和PowerMock区别最大的一个地方,对于Mockito来说,一旦声明了一个MockedStatic,它会一直留在当前的Thread中并且会对当前Thread中所有调用的代码产生影响,这个影响不仅仅局限于你的测试代码,甚至会对测试框架(TestNG,Junit等)产生影响,所以我们一定要保证在测试代码结束后对MockedStatic进行关闭。如果你使用jdk1.7及以上版本,可以通过try(resource){}块来声明一个MockedStatic,或者通过try{}finally{}方式来确保MockedStatic及时关闭。

Mockito.mockConstruction

MockedConstruction<FileOutputStream> mockedConstruction = Mockito.mockConstruction(FileOutputStream.class, ((fileOutputStream, context) -> {Mockito.doNothing().when(fileOutputStream).write(any());}));

和MockedStatic类似,在使用完成之后需要对MockedConstruction进行close

mockedConstruction.close();

Mockito mockStatic, mockConstruction相关推荐

  1. junit5 mock静态方法 Mockito.mockStatic()

    junit5 mock静态方法 环境 jdk11 , junit5 ,springboot pom <dependency><groupId>org.springframewo ...

  2. 单元测试Mock框架--Mockito

    文章目录 目前开发中,单元测试遇到的问题 解决方案--Mock Junit4 + Mockito: Mockito常用注解: Mockito常用方法: Tips: 总结 目前开发中,单元测试遇到的问题 ...

  3. Mockito中模拟静态方法

    Mockito中模拟静态方法 背景 在项目实际开发中,编写单元测试用例时,需要对静态方法进行模拟,本次文章就简单整理下如何使用Mockito来模拟静态方法. 添加依赖 <dependency&g ...

  4. 使用Mockito mock一个静态方法

    使用Mockito mock一个静态方法 在3.4.0之前,我们是不能使用Mockito来mock一个静态方法的,而必须使用PowerMockito:但是在之后的版本中已经支持了通过Mockito直接 ...

  5. Mockito 如何 mock 静态方法

    在实际工作当中,我们经常会遇到需要对静态方法进行 mock 的情况.在 mockito 2.x 的时代,我们需要借助 powmock 才能实现.当 mockito 进化到了 3.4.0 版本以后,也开 ...

  6. 使用Mockito mock静态方法

    在单测的时候,很多场景需要对静态方法进行mock打桩 之前在mockito2.x的时代需要借助powmock的功能 mockito在3.4.0版本也开始支持了静态方法的mock,使用方法如下 引入依赖 ...

  7. Java之ut,mock与jacoco

    因powermock的@PrepareForTest()注解中的Javassist与jacoco的覆盖检测机制相冲突,所以会出现覆盖率始终为0的情况.所以需要mock静态方法时,可以采用mockito ...

  8. mock详细教程入门这一篇就够了(*)

    前言 1.什么是mock测试 Mock 测试就是在测试活动中,对于某些不容易构造或不容易获取的比较复杂的数据/场景,用一个虚拟的对象(Mock对象)来创建用于测试的测试方法. 2.为什么要进行Mock ...

  9. Java也能做爬虫了?我爬取并下载了酷狗TOP500的歌曲!

    点击"开发者技术前线",选择"星标????" 在看|星标|留言,  真爱 作者:后山悟道人   链接:my.oschina.net/gllfeixiang/bl ...

最新文章

  1. 在ecshop顶部会员信息提示区显示会员等级
  2. python语言中内置的字符串排版方法_Python14之字符串(各种奇葩的内置方法)
  3. windows下socket开发tcp程序 简单例子
  4. python简单数据类型变量_python-2-变量和简单数据类型
  5. 设计模式C++学习笔记之二(Proxy代理模式)
  6. Jenkins知识地图
  7. 证件照的背景颜色转换
  8. Windows组策略禁止广告弹窗
  9. 计算机类专业学习难度排行,大学最难学的十大专业排名
  10. 结构方程模型自由度和卡方值为0(零)怎么办?
  11. 软件导出excel时提示没有注册类
  12. 楷书书法规则_写好楷书的五条规律,不懂这些,书法就很难入门
  13. MacBook Air响一声白屏故障情况说明及解决
  14. HCIE - Routing Switching v3.0 Outline
  15. java将图片背景替换为透明
  16. 运行计算机配置gpedit,组策略(gpeditmsc)学习
  17. 百度css3背景图代码,CSS3 实现花式背景图案
  18. 8位二进制数中,对于-128的一些个人理解
  19. atom可以做php开发吗,atomcode 一个相当牛B的PHP开发框架,可以到网上去搜索文档,就不帖在这儿了 WEB(ASP,PHP,...) 238万源代码下载- www.pudn.com...
  20. Java多线程并发编程--Java并发包(JUC)

热门文章

  1. 一本好书《AdvancED flex4》
  2. AWS API GATEWAY的使用
  3. 【CSS】阿里iconfont的使用方法(另附font-family引入方法)
  4. C++ std::mutex 与 const函数
  5. 影像组学学员成果分享:BraTS2017数据集的迁移学习+深度学习提取特征+机器学习
  6. transformer xl 用于文本生成
  7. NSGA2多目标优化算法的MATLAB仿真
  8. 宝塔面板免费版怎样安装-宝塔Linux面板安装教程-详细步骤-命令-干什么用的
  9. Windows CMD命令获取文件属性详细信息
  10. 【面试必读】求你们不要再问我Java中的锁及优化了?