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

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

    2023年04月22日
    浏览(41)
  • Mockito框架常用注解

    他若喜欢你,你脾气再大都叫个性,他若不喜欢你,就算你温顺的像只猫,他都嫌你掉毛 Mockito框架常用注解包括: @Mock:用于创建被mock的对象实例。 @Spy:用于创建被spy的对象实例,即保留原对象的行为。 @InjectMocks:用于创建需要注入被mock对象的类的实例。 @Captor:用于捕

    2024年02月13日
    浏览(32)
  • Mockito的简单使用(二)

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

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

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

    2024年02月13日
    浏览(32)
  • Mockito单元测试基本使用

    本文参考: 【码农教程】手把手教你Mockito的使用 - 掘金 (juejin.cn) java - doReturn().when()与when().thenReturn() - 成长之路 - SegmentFault 思否 单元测试实践篇:Mock_阿里巴巴淘系技术团队官网博客的博客-CSDN博客 阿里是如何进行单元测试培训的?_Hollis Chuang的博客-CSDN博客 【Mockito】Mock

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

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

    2024年02月08日
    浏览(34)
  • Mockito升级

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

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

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

    2024年01月25日
    浏览(13)
  • Mockito详细教程

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

    2024年02月02日
    浏览(18)
  • Mockito单元测试详解

    依赖: SpringBoot默认的Mock框架是Mockito,和junit一样,只需要依赖spring-boot-starter-test就可以了 (1)@RunWith 指定运行环境,例: @RunWith(SpringRunner.class) Junit运行Spring的测试环境 @RunWith(MockitoJUnitRunner.class) Junit运行Mockito的运行环境,不会加载springboot上下文 @SpringBootTest 加载springbo

    2023年04月09日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包