如何使用mockito验证公共类的静态方法被调用?

2023-11-21

伪代码是这样的

rc = SomePublicClass.myPublicStaticFunc(arg)


public class SomePublicClass {
    private SomePublicClass() {
    }

    public static int myPublicStaticFunc(arg) {
        return 5;
    }
}

在UT这不起作用

verify(SomePublicClass, times(1)). myPublicStaticFunc();

由于这是一个公共类,如何验证 myFunc 在单元测试中在 mockito 中被调用?如果 SomePublicClass 是一个模拟类,那么这可以工作。


从 Mockito 3.4 开始可以使用模拟静态方法。

请参阅拉取请求:Mockito #1013:定义并实现静态模拟的 API。

请注意,此功能可用这一事实并不等同于建议使用它。它针对的是无法重构源代码的遗留应用程序。

话说回来:

测试静态方法何时不带参数:

try (MockedStatic<SomePublicClass> dummyStatic = Mockito.mockStatic(SomePublicClass.class)) {
    dummyStatic.when(SomePublicClass::myPublicStaticFunc)
               .thenReturn(5);
    // when
    System.out.println(SomePublicClass.myPublicStaticFunc());
    //then
    dummyStatic.verify(            
            SomePublicClass::myPublicStaticFunc, times(1));
}

测试静态方法何时接受参数:

try (MockedStatic<SomePublicClass> dummyStatic = Mockito.mockStatic(SomePublicClass.class)) {
    dummyStatic.when(() -> SomePublicClass.myPublicStaticFunc(anyInt()))
               .thenReturn(5);
    // when
    System.out.println(SomePublicClass.myPublicStaticFunc(7));
    //then
    dummyStatic.verify(            
            () -> SomePublicClass.myPublicStaticFunc(anyInt()), times(1));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用mockito验证公共类的静态方法被调用? 的相关文章

  • 在Java中将*s打印为三角形?

    我在 Java 课程中的作业是制作 3 个三角形 一份左对齐 一份右对齐 一份居中 我必须为什么类型的三角形制作一个菜单 然后输入需要多少行 三角形必须看起来像这样 到目前为止 我能够完成左对齐的三角形 但我似乎无法获得其他两个 我尝试用谷
  • 将一种类型的对象声明为另一种类型的实例有什么好处? [复制]

    这个问题在这里已经有答案了 可能的重复 Base b2 new Child 是什么意思 表示 https stackoverflow com questions 4447924 what does base b2 new child sig
  • GET 请求的 Spring 注解

    这两种spring GET方法有什么区别呢 哪一种是首选方法 Component Scope request Path public class TestComponent GET Path hello public String prin
  • 项目缺少所需的注释处理库

    我的 Eclipse IDE 突然在问题视图中显示 xxxx 项目缺少所需的注释处理库 xxxx M2 REPO 中的一些旧 jar 我用谷歌搜索 没有找到任何答案 为什么我的项目使用旧的 jar 以及错误来自哪里 To remove th
  • Kafka Java Consumer 已关闭

    我刚刚开始使用卡夫卡 我面临着消费者的一个小问题 我用Java写了一个消费者 我收到此异常 IllegalStateException 此消费者已关闭 我在以下行中遇到异常 ConsumerRecords
  • 需要正则表达式帮助

    我正在尝试替换两次或多次出现的 br like br br br 标签与两个一起 br br 具有以下模式 Pattern brTagPattern Pattern compile lt s br s s gt s 2 Pattern CA
  • maven 无法下载 jacoco 0.7.10-SNAPSHOT jar

    我对此感到困惑 我的 pom xml 中有这个
  • 从 HttpClient 3 转换为 4

    我已经成功地对所有内容进行了更改 但以下内容除外 HttpClient client HttpPost method client new DefaultHttpClient method new HttpPost url InputStr
  • 更改 JComboBox 中滚动条的大小

    有谁知道如何手动更改 jComboBox 中的滚动条大小 我已经尝试了一大堆东西 但没有任何效果 好吧 我明白了 您可以实现 PopUpMenuListener 并使用它 public void popupMenuWillBecomeVis
  • 是否有最新的 Facebook Java SDK? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 好像没找到最近更新的 如果没有 是否有一个好的 Java 库来执行与 Facebook 的 API 交
  • Java和手动执行finalize

    如果我打电话finalize 在我的程序代码中的一个对象上 JVM当垃圾收集器处理这个对象时仍然再次运行该方法吗 这是一个大概的例子 MyObject m new MyObject m finalize m null System gc 是
  • Java 中处理异步响应的设计模式

    我读过类似问答的答案 如何在 JAVA 中创建异步 HTTP 请求 https stackoverflow com questions 3142915 how do you create an asynchronous http reque
  • Java String ReplaceAll 方法给出非法重复错误?

    我有一个字符串 当我尝试运行时replaceAll方法 我收到这个奇怪的错误 String str something op str str replaceAll o n it works fine str str replaceAll n
  • JPA 将 BigDecimal 作为整数保存在数据库中

    我在数据库中有这个字段 ITEMCOST NUMERIC 13 DEFAULT 0 NOT NULL 在JAVA中 Entity中的字段定义如下 Column name ITEMCOST private BigDecimal itemCos
  • CXF:通过 SOAP 发送对象时如何排除某些属性?

    我使用 Apache CXF 2 4 2 当我将数据库中的某个对象返回给用户时 我想排除一些属性 例如密码 我怎样才能做到这一点无需创建临时的班级 有这方面的注释吗 根据 tomasz nurkiewicz 评论我应该使用 XmlTrans
  • Java 中的微分方程

    我正在尝试用java创建一个简单的SIR流行病模型模拟程序 基本上 SIR 由三个微分方程组定义 S t l t S t I t l t S t g t I t R t g t I t S 易感人群 I 感染人群 R 康复人群 l t c
  • 使用自定义比较器在 Java 中创建 SortedMap

    我想创建一个TreeMap在 Java 中具有自定义排序顺序 排序后的键是字符串 需要根据第二个字符进行排序 这些值也是字符串 示例地图 Za FOO Ab Bar 您可以像这样使用自定义比较器 Comparator
  • Jackson 反序列化相当于 @JsonUnwrapped 吗?

    假设我有以下课程 public class Parent public int age JsonUnwrapped public Name name 生成 JSON age 18 first Joey last Sixpack 我如何将其反
  • Android Google 地图无法在当前主题中找到样式“mapViewStyle”

    添加谷歌地图视图时 我扩展了MapView 使用xml编辑器将其添加到活动中 并将我的谷歌地图api密钥手动添加到布局xml文件中 我的权限在清单文件中允许互联网 我想知道的是 在 xml 编辑器中 我收到错误 无法在当前主题中找到样式 m
  • 使用 AmazonSNSClient 发送短信时的授权

    aws 官方文档如何发送短信 http docs aws amazon com sns latest dg sms publish to phone html使用 java 中的 aws SDK 非常简单 但是 当发送如底部示例所示的消息时

随机推荐

  • Python:如何在txt文件中写入控制台中的错误?

    我有一个 python 脚本 每 10 分钟就会向我发送一封电子邮件 其中包含控制台中编写的所有内容 我在我的 ubuntu 18 04 vps 中使用 crontab 运行它 有时它不会发送邮件 所以我假设当发生错误时执行会停止 但是如何
  • 表和图交叉参考官 R

    我希望能够使用官员交叉引用 Word 文档中的表格或图形R包裹 到目前为止我已经遇到过这些材料 但他们似乎没有解决方案 https davidgohel github io officer articles word html table
  • 在 iOS 中设置 AVCaptureDevice 输出的灰度

    我想在我的应用程序中实现自定义相机 所以 我正在使用创建这个相机AVCaptureDevice 现在我只想在我的自定义相机中显示灰色输出 所以我试图使用这个setWhiteBalanceModeLockedWithDeviceWhiteBa
  • 调用 stringWithFormat 时,长期使用哪个正确的说明符?

    我有这段运行良好的代码 但我不知道这是否是调用 stringWithFormat 的正确方法 因为在文档中 d 代表 int 并且我传递了一个 long long seconds long NSDate date timeIntervalS
  • 使用 R 制作动画 gif [重复]

    这个问题在这里已经有答案了 有人对用 R 制作 GIF 动画有什么建议吗 我正在尝试制作一些延时地图 GIF 重复问题 请参阅之前的 StackOverflow 问题在 R 中创建一系列绘图它提供了许多解决方案 包括指向其他 有用包的指针
  • 使用元组作为参数列表调用方法[重复]

    这个问题在这里已经有答案了 我想知道最好的方法是什么 val foo Some a val bar Some 2 def baz a String b Int if b 2 0 Some a b else None x zip y flat
  • 如何在 Rust 中使用参数重载或可选参数?

    我正在尝试为二叉树编写一个打印函数 这是迄今为止我所拥有的 impl TreeNode fn print self self print 0 fn print self level u8 for i in range 0 level pri
  • 将每个字典值转换为 utf-8(字典理解?)

    我有一本字典 我想将每个值转换为 utf 8 这可行 但是有没有 更Pythonic 的方法 for key in row keys row key unicode row key encode utf 8 对于我可以做的清单 unicod
  • jquery 获取选中复选框

    我正在尝试获取复选框列表和已检查的计数 我有这个 var obj this closest li find checkbox var childCount obj size var checkedCount obj checked leng
  • 数据库中所有表的列表

    如何使用查询获取 SQL Server 数据库中所有表的列表 我的目的是在网页上动态显示它 Try SELECT name from sys tables 这应该会给你你想要的 然后 您需要从网页调用它以按所需格式显示 您可能想查看 如何使
  • BASH 不以防万一

    我正在尝试找出一种合理的方法来在案例中执行 NOT 子句 我这样做的原因是为了 遇到情况时进行转码 也就是说 如果我击中了 avi 没有理由再次将其转为 avi 我可以 只需将其移开 这就是我的案例底部的范围 should做 无论如何 我有
  • HttpWebRequest 非常慢!

    我正在使用开源库连接到我的网络服务器 我担心网络服务器运行速度极慢 然后我尝试在 Ruby 中进行简单的测试 得到了这些结果 Ruby 程序 10 个 HTTP 需要 2 11 秒 获取 Ruby 程序 100 个 HTTP 需要 18 1
  • 在 azure cdn 上托管字体 - CORS 支持

    我无法在 IE 或 Firefox 中通过 azure cdn 公开 azure blob 存储托管字体 我相信这是因为 font face 跨域问题 CORS 正常的解决方案是添加 Access Control Allow Origin
  • 我是否需要为 CDC 设备编写自己的主机端 USB 驱动程序

    这可能不被认为与编程直接相关 但我不知道还能问哪里 我尝试过浏览各种网站 但到目前为止 谷歌还不是我的朋友 我无法确定是否需要为我正在开发的设备可能连接的各种 windows linux mac 平台编写自己的设备驱动程序 或者该功能是否由
  • 如何使用 PHP 以编程方式构建 APR1-MD5

    很像这个问题我想从 PHP 生成 htpasswd 文件条目 然而 正如原始答案中提到的 答案没有显示如何实现 APR1 风格 它需要是 APR1 Apache 风格 才能与 mod dav svn 一起使用 我似乎找不到可以创建密码的有效
  • 故事板中的 initWithNibName 方法

    我正在按照 Facebook 的教程发布到用户的墙上 http developers facebook com docs howtos publish to feed ios sdk 尽管它是根据 xib 项目制作的 但到目前为止 我的故事
  • 发送投票电子邮件

    使用 Outlook API 可以通过在 MailItem 实例上设置 VotingOpions 属性来发送带有民意调查的电子邮件 是否可以以任何方式对 Exchange Web 服务执行相同的操作 Microsoft 已经发布了投票电子邮
  • 在Python中将点后的浮点四舍五入到2位数字

    我正在使用这段代码 f 0 3223322 float 2f f 有没有更Pythonic 更简洁的方法 无需两次转换 使用round文档中的以下注释令人沮丧 round 对于浮点数的行为可能会令人惊讶 例如 round 2 675 2 给
  • 在 pandas MultiIndex 前面添加一个级别

    我有一个 DataFrame 其中经过一些分组后创建了 MultiIndex import numpy as np import pandas as pd from numpy random import randn df pd DataF
  • 如何使用mockito验证公共类的静态方法被调用?

    伪代码是这样的 rc SomePublicClass myPublicStaticFunc arg public class SomePublicClass private SomePublicClass public static int