Mockito中模拟静态方法
背景
在项目实际开发中,编写单元测试用例时,需要对静态方法进行模拟,本次文章就简单整理下如何使用Mockito来模拟静态方法。
添加依赖
<dependency><groupId>org.mockito</groupId><artifactId>mockito-inline</artifactId><version>3.8.0</version></dependency>
测试类
测试类中有两个方法,一个带参数,一个不带参数
staticclassStaticUtils{staticStringgetName(){return"yuan";}staticintadd(int x,int y){return x + y;}}
静态方法模拟
在Mockito中可以使用Mockito.mockStatic( Class classToMock )方法来模拟对静态方法的调用,它会返回一个MockedStatic类型的模拟对象,该对象继承了AutoCloseable接口,需要手动释放资源。下面是具体的使用:
无参方法
@TestpublicvoidtestStaticWithNoArgs(){// 无参方法模拟try(finalMockedStatic<StaticUtils> staticUtilsMockedStatic =Mockito.mockStatic(StaticUtils.class)){
staticUtilsMockedStatic.when(StaticUtils::getName).thenReturn("wu");Assert.assertEquals(StaticUtils.getName(),"wu");}}
有参方法
@TestpublicvoidtestStaticWithArgs(){// 有参方法模拟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://github.com/yzh19961031/blogDemo/tree/master/mockitoTest
版权归原作者 洒脱的智障 所有, 如有侵权,请联系我们删除。