Mockito中模拟静态方法
背景
在项目实际开发中,编写单元测试用例时,需要对静态方法进行模拟,本次文章就简单整理下如何使用Mockito来模拟静态方法。
添加依赖
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>3.8.0</version>
</dependency>
测试类
测试类中有两个方法,一个带参数,一个不带参数
static class StaticUtils {
static String getName() {
return "yuan";
}
static int add(int x, int y) {
return x + y;
}
}
静态方法模拟
在Mockito中可以使用Mockito.mockStatic( Class classToMock )方法来模拟对静态方法的调用,它会返回一个MockedStatic类型的模拟对象,该对象继承了AutoCloseable接口,需要手动释放资源。下面是具体的使用:
无参方法
@Test
public void testStaticWithNoArgs() {
// 无参方法模拟
try (final MockedStatic<StaticUtils> staticUtilsMockedStatic = Mockito.mockStatic(StaticUtils.class)) {
staticUtilsMockedStatic.when(StaticUtils::getName).thenReturn("wu");
Assert.assertEquals(StaticUtils.getName(), "wu");
}
}
有参方法
@Test
public void testStaticWithArgs() {
// 有参方法模拟
try (MockedStatic<StaticUtils> staticUtilsMockedStatic = Mockito.mockStatic(StaticUtils.class)) {
staticUtilsMockedStatic.when(() -> StaticUtils.add(Mockito.anyInt(), Mockito.anyInt())).thenReturn(55);
Assert.assertEquals(StaticUtils.add(1,3), 52);
}
}
结语
参考:https://www.baeldung.com/mockito-mock-static-methods文章来源:https://www.toymoban.com/news/detail-535666.html
代码地址:https://github.com/yzh19961031/blogDemo/tree/master/mockitoTest文章来源地址https://www.toymoban.com/news/detail-535666.html
到了这里,关于Mockito中模拟静态方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!