springboot项目单元测试使用PowerMockito跳过静态方法


有时候做单元测试经常需要跳过某些工具类,比如工具类对用户登录态的获取和初始化:
image

Mockito不支持静态方法的Mock,当所测逻辑里有静态工具类方法或私有方法我们希望他返回特定值时(极值边界、异常测试场景),我们要用到PowerMock去弥补Mockito的不足

一、使用PowerMock所需要的依赖

        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-module-junit4</artifactId>
            <version>1.7.4</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-api-mockito</artifactId>
            <version>1.7.4</version>
            <scope>test</scope>
        </dependency>

二、Mock工具类和模拟静态方法

在测试类上引入注解

@RunWith(PowerMockRunner.class)
@PrepareForTest({CommonUtils.class})

Mock工具类

        PowerMockito.mockStatic(CommonUtils.class);

模拟静态方法

        PowerMockito.when(CommonUtils.getCustomerId(any())).thenReturn("staticMock");
        PowerMockito.when(CommonUtils.getCustomerPhone(any())).thenReturn("staticMock");

@PrepareForTest({静态方法类名.class})注解不能漏,漏了这个会报下面的错误

org.powermock.api.mockito.ClassNotPreparedException:


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM