MockedStatic
是 Mockito 3.4.0 版本引入的一个功能,用于模拟静态方法。在之前的 Mockito 版本中,模拟静态方法是一项困难的任务,通常需要借助其他工具如 PowerMockito。但是,从 Mockito 3.4.0 开始,你可以使用 MockedStatic
类轻松地模拟静态方法。
以下是如何使用 MockedStatic
模拟静态方法的示例:
- 首先,确保你已经添加了 Mockito 的依赖项。对于 Maven 项目,添加以下依赖项:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.4.0</version>
<scope>test</scope>
</dependency>
- 然后,编写一个简单的类,包含一个静态方法:
public class MyClass {
public static String myStaticMethod() {
return "Original result";
}
}
- 接下来,编写一个测试类,使用
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 语句,这意味着在测试方法结束时,模拟将自动关闭。