Mockito mockStatic, mockConstruction

这篇具有很好参考价值的文章主要介绍了Mockito mockStatic, mockConstruction。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

之前项目中都是使用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文章来源地址https://www.toymoban.com/news/detail-504669.html

mockedConstruction.close();

到了这里,关于Mockito mockStatic, mockConstruction的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mockito升级

    系统是SpringBoot的,原来单元测试用的 Mockito,不过由于版本较低,对静态方法无法Mock,所以又引入了 PowerMock; 好长时间没动过了,现在刚好有一个项目需要写测试代码,顺便也把Mockito升升级; 现在Mockito版本已经到了 5.2.0了,不过需要Java11的支持;目前项目还使用的是Jav

    2024年02月09日
    浏览(24)
  • 详解Mockito

    在我们的编程世界中,测试是一个非常重要的环节,它能帮助我们确保代码的质量和稳定性。而在众多的测试方法中, Mock 测试是一种非常有效的手段。 1.1 什么是 Mock 测试 Mock 测试,顾名思义,就是模拟测试。它是一种使用模拟对象替换真实对象的测试方法。在实际的开发

    2024年01月25日
    浏览(12)
  • Mockito的简单使用(二)

    Mockito的简单使用可以参考上一篇Mockito的简单使用 1、spy和mock生成的对象不受spring管理 2、spy调用真实方法时,其它bean是无法注入的,要使用注入,要使用SpyBean 3、SpyBean和MockBean生成的对象受spring管理,相当于自动替换对应类型bean的注入,比如@Autowired等注入。 为了减少单测

    2024年02月05日
    浏览(21)
  • Mockito详细教程

    单元测试(UT) 工作一段时间后,才真正意识到代码质量的重要性。虽然囫囵吞枣式地开发,表面上看来速度很快,但是给后续的维护与拓展制造了很多隐患。 作为一个想专业但还不专业的程序员,通过构建覆盖率比较高的单元测试用例,可以比较显著地提高代码质量。如后

    2024年02月02日
    浏览(17)
  • 一文浅谈Mockito使用

    • 一旦mock对象被创建了,mock对象会记住所有的交互,然后你就可以选择性的验证你感兴趣的交互,验证不通过则抛出异常。 • 默认情况下,所有的函数都有返回值。mock函数默认返回的是null,一个空的集合或者一个被对象类型包装的内置类型,例如0、false对应的对象类型为

    2024年02月08日
    浏览(32)
  • Mockito中模拟静态方法

    在项目实际开发中,编写单元测试用例时,需要对静态方法进行模拟,本次文章就简单整理下如何使用Mockito来模拟静态方法。 测试类中有两个方法,一个带参数,一个不带参数 在Mockito中可以使用Mockito.mockStatic( Class classToMock )方法来模拟对静态方法的调用,它会返回一个Mo

    2024年02月13日
    浏览(30)
  • Mock&Mockito使用手册

    mock  测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。这个虚拟的对象就是mock对象。mock对象就是真实对象在调试期间的代替品; Mock 对象 :模拟对象的概念就是我们想要创建一个可以替代实际对象的对象,

    2024年02月11日
    浏览(35)
  • Mockito单元测试异常情况

    一、空指针异常 例子: 使用Collectors.groupingBy()进行分组时, 分组值存在null值 。 解决办法:分组值为null时,默认值为空字符,或者让数据不为空。 二、多个参数匹配异常 例如: 如果a和b一个是正常传参(list、map、string…)另一个是任意万能传参(any()、anyList()、anyString(

    2024年02月07日
    浏览(49)
  • 单元测试与Mockito

    系列文章目录和关于我 最近在新公司第一次上手写代码,写了一个不是很难的业务逻辑代码,但是在我写单元测试的时候,发现自己对单元测试的理解的就是一坨,整个过程写得慢,还写得臭。造成这种局面我认为是因为: 对Mockito api是不是很熟悉 没有自己单元测试方法论

    2023年04月22日
    浏览(38)
  • Spring单元测试+Mockito

    一,背景 单元测试基本上是开发逃不过的一个工作内容,虽然往往因为过于无聊,或者过于麻烦,而停止于项目的迭代之中,不了了之了。其实不是开发们懒,而是上头要求的测试覆盖率高,但是又没有好用的工具,导致工作积压,最后只能舍弃掉这部分。 最近发现Spring+

    2024年04月17日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包