0.前情提要
我们在编写Java单元测试时,经常使用when().thenReturn()
来返回假数据,当我们遇到public static
修饰的类时,会发现使用when、thenReturn来返回假数据会出现NPE,也就是空指针异常,但是这个static方法内还存在查询数据库等操作,那么我们就需要如下的方法进行解决。
1.解决
使用 Mockito 5+(内置静态方法 Mock 支持)
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>5.2.0</version>
<scope>test</scope>
</dependency>
import static org.mockito.Mockito.*;
@Test
void testStaticMethod() {
try (MockedStatic<MyClass> mockedStatic = mockStatic(MyClass.class)) {
// Mock 静态方法
mockedStatic.when(() -> MyClass.staticMethod("arg"))
.thenReturn("mockedValue");
// 调用测试代码
String result = MyClass.staticMethod("arg");
assertEquals("mockedValue", result);
} // 自动关闭 Mock(避免影响其他测试)
}
但是注意此方法只支持Mockito 5+,其他并未进行测试,如果不便切换版本的小伙伴请自行测试。

© 版权声明
- 本博客所拥有的文章除特别声明外,均默认采用 CC BY 4.0 许可协议。
- 文章部分内容可能来源于公共网络,如有侵权,请联系博主在核实后进行修改或删除。
THE END
- 最新
- 最热
只看作者