MockedStatic 用于模拟静态方法

本文涉及的产品
云原生网关 MSE Higress,422元/月
应用实时监控服务-应用监控,每月50GB免费额度
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: `MockedStatic` 是 Mockito 3.4.0 版本引入的一个功能,用于模拟静态方法。在之前的 Mockito 版本中,模拟静态方法是一项困难的任务,通常需要借助其他工具如 PowerMockito。但是,从 Mockito 3.4.0 开始,你可以使用 `MockedStatic` 类轻松地模拟静态方法。以下是如何使用 `MockedStatic` 模拟静态方法的示例:1. 首先,确保你已经添加了 Mockito 的依赖项。对于 Maven 项目,添加以下依赖项:```xml<dependency> <groupId>org.mockito</groupId

MockedStatic 是 Mockito 3.4.0 版本引入的一个功能,用于模拟静态方法。在之前的 Mockito 版本中,模拟静态方法是一项困难的任务,通常需要借助其他工具如 PowerMockito。但是,从 Mockito 3.4.0 开始,你可以使用 MockedStatic 类轻松地模拟静态方法。

以下是如何使用 MockedStatic 模拟静态方法的示例:

  1. 首先,确保你已经添加了 Mockito 的依赖项。对于 Maven 项目,添加以下依赖项:
<dependency>
   <groupId>org.mockito</groupId>
   <artifactId>mockito-core</artifactId>
   <version>3.4.0</version>
   <scope>test</scope>
</dependency>
  1. 然后,编写一个简单的类,包含一个静态方法:
public class MyClass {
   
    public static String myStaticMethod() {
   
        return "Original result";
    }
}
  1. 接下来,编写一个测试类,使用 MockedStatic 模拟 myStaticMethod 方法:
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class MyClassTest {
   
    @Test
    public void testMyStaticMethod() {
   
        try (MockedStatic<MyClass> myClassMock = Mockito.mockStatic(MyClass.class)) {
   
            myClassMock.when(() -> MyClass.myStaticMethod()).thenReturn("Mocked result");

            String result = MyClass.myStaticMethod();
            assertEquals("Mocked result", result);

            myClassMock.verify(() -> MyClass.myStaticMethod());
        }
    }
}

在这个示例中,我们使用 try (MockedStatic<MyClass> myClassMock = Mockito.mockStatic(MyClass.class)) 创建了一个 MockedStatic 实例。然后,我们使用 when() 方法定义了静态方法的模拟行为,并使用 thenReturn() 方法指定返回值。接下来,我们调用静态方法并验证其返回值。最后,我们使用 verify() 方法验证静态方法是否被调用。

请注意,MockedStatic 使用了 try-with-resources 语句,这意味着在测试方法结束时,模拟将自动关闭。

相关文章
|
8月前
|
自然语言处理 算法 数据挖掘
长绳方法
进一步提高语言模型(LLM)的性能,通过扩展其上下文窗口至超过200万个标记,从而实现更深入的语境理解。本文将对这一成果进行深入解读,探讨其意义和潜在应用。
56 2
|
7月前
|
存储 缓存 Java
createTempFile方法详解
createTempFile方法详解
|
8月前
|
算法 数据安全/隐私保护
常用的有限元网格生成方法
本文介绍了三种常见的有限元网格生成方法:映射法、四(八)叉树法和Delaunay三角化法。映射法通过坐标变换将物理域映射到规则参数域,适合生成结构化和非结构化网格,但处理复杂区域时较困难。四(八)叉树法基于栅格,通过递归细分逼近边界,适用于非结构化网格,但内部和边界网格的相容剖分较复杂。Delaunay三角化法通过保证外接圆特性生成高质量网格,适用于凸区域,但在凹区域需进行边界恢复。前沿推进法则从边界开始逐步向内生成网格,边界质量好,但数据结构设计和推进规则制定有一定挑战。这些方法各有优缺点,常结合使用以优化网格剖分。
807 1
|
8月前
调用反射类的指定方法
调用反射类的指定方法
|
8月前
调用反射类的方法
调用反射类的方法
是的方法
第三份阿发顺大丰阿萨德
|
测试技术 C#
分享几个实用的方法
  今天主要和大家分享的是本人总结的分页执行方法,也可以说就是分批执行;该篇采用java8新增的表达式来操作,希望能给各位带来好的帮助和在日常工作中提供便利;同样的操作流程和逻辑之前用C#代码写过一次,有需要的朋友可以看以前的博文; 分页方式拆分List为多个子集List方法 执行统一方法-无...
1217 0
|
数据库 Go
统计数据库大小的方法
原文:统计数据库大小的方法     一台服务器上所有数据库(也可能是部分数据库)的大小是我们经常需要了解的,它不仅能让我们知道目前数据库使用磁盘的比例, 而且定期搜集这些信息,还能了解数据库一段时间的数据增量,更为常用的是在做数据迁移和升级时,方便规划新服务器磁盘容量。
1326 0