Mockito中模拟静态方法

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

Mockito中模拟静态方法

背景

在项目实际开发中,编写单元测试用例时,需要对静态方法进行模拟,本次文章就简单整理下如何使用Mockito来模拟静态方法。

添加依赖

<dependency>
  <groupId>org.mockito</groupId>
  <artifactId>mockito-inline</artifactId>
  <version>3.8.0</version>
</dependency>

测试类

测试类中有两个方法,一个带参数,一个不带参数

static class StaticUtils {
  static String getName() {
    return "yuan";
  }

  static int add(int x, int y) {
    return x + y;
  }
}

静态方法模拟

在Mockito中可以使用Mockito.mockStatic( Class classToMock )方法来模拟对静态方法的调用,它会返回一个MockedStatic类型的模拟对象,该对象继承了AutoCloseable接口,需要手动释放资源。下面是具体的使用:

无参方法

@Test
public void testStaticWithNoArgs() {
  // 无参方法模拟
  try (final MockedStatic<StaticUtils> staticUtilsMockedStatic = Mockito.mockStatic(StaticUtils.class)) {
    staticUtilsMockedStatic.when(StaticUtils::getName).thenReturn("wu");
    Assert.assertEquals(StaticUtils.getName(), "wu");
  }
}

有参方法

@Test
public void testStaticWithArgs() {
  // 有参方法模拟
  try (MockedStatic<StaticUtils> staticUtilsMockedStatic = Mockito.mockStatic(StaticUtils.class)) {
    staticUtilsMockedStatic.when(() -> StaticUtils.add(Mockito.anyInt(), Mockito.anyInt())).thenReturn(55);
    Assert.assertEquals(StaticUtils.add(1,3), 52);
  }
}

结语

参考:https://www.baeldung.com/mockito-mock-static-methods

代码地址:https://github.com/yzh19961031/blogDemo/tree/master/mockitoTest文章来源地址https://www.toymoban.com/news/detail-535666.html

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

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

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

相关文章

  • 【Java应用】使用Mockito进行模拟和测试桩

    Mockito是一个流行的Java模拟框架,用于编写单元测试代码时模拟(mock)和测试桩(stub)对象的行为。可轻松模拟Java类和接口的行为,帮助测试人员和开发人员更好地设计和执行单元测试。 使用Mockito,开发人员可以模拟一个对象,使其表现出某些预期的行为,而无需使用真实

    2024年02月11日
    浏览(36)
  • 28、springboot的静态模版(前端页面)重加载和 devtools开发者工具

    总结:实现静态模板重加载的两个方法 方法1:在 yml 配置文件,关闭页面模板缓存, 再按 ctrl+f9 重新构建 方法2:直接添加 devtools 依赖,再按 ctrl+f9 重新构建 需求:如果前端使用到 Thymeleaf模板,然后我们在修改前端页面的时候,每次修改后想直接按浏览器的刷新就可以刷新

    2024年02月12日
    浏览(41)
  • 微信开发者工具模拟器中不显示鼠标问题

    前言 在使用微信开发者工具开发微信小程序时,使用到了第二屏幕,在第一屏幕上,微信开发者工具模拟器中,可以正常显示鼠标,而在第二屏幕上不显示鼠标。 解决方案: 方案1:设置指针轨迹:控制面板➡鼠标➡指针选项➡勾拳显示指针轨迹 。如下图所示: 这样方案的

    2024年02月12日
    浏览(68)
  • 使用微信开发者工具模拟微信小程序定位

            哈喽,各位同僚们,我们平时在测试微信小程序的时候,如果小程序中有获取定位或者地图的功能,测试场景中常常需要去模拟不同的位置,例如我们模拟在电子围栏的外面、里面和边界区域等。那么,我们如何在模拟微信小程序的不同位置呢?我曾经使用过一些模

    2024年04月25日
    浏览(68)
  • spring boot 单元测试JUnit5使用Mockito模拟Mock数据调用

    spring boot 单元测试JUnit5使用Mockito模拟Mock数据调用 好大一批新用法,大家静下心来好好看看吧 1. spring boot 使用 Mockito.when().thenReturn()模拟返回值 Mockito 是一种 Java mock 框架,他主要就是用来做 mock 测试的,他可以模拟任何 Spring 管理的 bean、模拟方法的返回值、模拟抛出异常…

    2024年02月15日
    浏览(55)
  • 运用谷歌浏览器的开发者工具,模拟搜索引擎蜘蛛抓取网页

    第一步:按压键盘上的F12键打开开发这工具,并点击右上角三个小黑点 第二步:选择More tools 第三步:选择Network conditions 第四步:找到User agent一列,取消复选框的勾选 第五步:选择谷歌爬虫agent即Googlebot 第六步:在当前浏览器地址栏中,输入想要访问的网站地址,直接访问

    2024年02月03日
    浏览(61)
  • Mockito 之 verify 使用方法

    这里以 AlphaService、BetaService 为例,将 BetaService 作为单元测试的目标类。 各场景下 verify 的使用: 校验 BetaService.sayHello 中是否调用了 AlphaService.init 校验 BetaService.sayHello 中调用了 AlphaService.init 的次数 其实,这里 verify(alphaService, times(1)).init() 等同于 verify(alphaService).init() 。让我

    2024年02月02日
    浏览(25)
  • 解决微信开发者工具企业微信小程序模式下模拟器白屏问题

    前一天晚上没有关电脑,第二天发现电脑自己重启了,然后微信开发者工具就出了问题,在企业微信小程序模式下,模拟器出现了白屏,只有上方title可以正常显示。点击模拟器右上角三个点都不出弹出菜单,并且在调试器可正常显示Wxml和接口调用,手机扫描预览生成的二维

    2024年02月09日
    浏览(57)
  • Junit + Mockito 测试回调(callback) 方法

    语言:Java JDK: Java8 及以上。 Java8推出函数式接口后,就经常使用此特性开发。 在使用Junit + Mockito 时遇到有回调(callback)的函数方法时,遇到几种情况,这里进行记录。 对于Mockito中打桩个人理解:测试的方法在正常环境需要引入其他类中的方法来 支撑(实) ,但是在

    2024年01月17日
    浏览(40)
  • 注册苹果开发者账号的方法

    在2020年以前,注册苹果开发者账号后,就可以生成证书。 但2020年后,因为注册苹果开发者账号需要使用Apple Developer app注册开发者账号,所以需要缴费才能创建ios证书了。 所以新政策出来后,注册苹果开发者账号,并缴费成为苹果开发者,才能手工创建证书了。注册苹果开

    2024年02月06日
    浏览(58)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包