mockito框架怎么mock静态方法
时间: 2025-02-19 18:00:33 浏览: 91
### 如何使用Mockito框架模拟静态方法
#### 使用PowerMock与Mockito组合实现静态方法的模拟
由于静态方法属于类本身而非实例,传统上Mockito无法直接对其进行模拟。为了克服这个局限性,在Mockito早期版本中通常借助第三方库PowerMock来完成这项工作[^1]。
```java
@RunWith(PowerMockRunner.class)
@PrepareForTest({ClassWithStaticMethod.class})
public class TestClass {
@Test
public void testStaticMethod() throws Exception {
ClassWithStaticMethod mockStatic = PowerMock.createMock(ClassWithStaticMethod.class);
expect(ClassWithStaticMethod.staticMethod()).andReturn(expectedValue);
PowerMock.replayAll();
assertEquals(expectedValue, ClassWithStaticMethod.staticMethod());
PowerMock.verifyAll();
}
}
```
#### 利用新版Mockito特性直接模拟静态方法
自从Mockito 3.4.0版起引入了`mockStatic()`功能之后,现在可以直接通过Mockito来进行静态方法的模拟而无需额外依赖其他工具[^3]。
```java
try (var mockedStatic = Mockito.mockStatic(ClassWithStaticMethod.class)) {
// 定义当调用staticMethod时返回特定值
mockedStatic.when(ClassWithStaticMethod::staticMethod).thenReturn(expectedValue);
// 执行待测逻辑...
// 验证静态方法确实被执行了一次
mockedStatic.verify(() -> ClassWithStaticMethod.staticMethod());
}
```
上述两种方式都可以有效地解决对于静态方法模拟的需求,但是推荐尽可能采用新版本Mockito自带的支持以简化项目配置并减少对外部库的依赖。
阅读全文
相关推荐


















