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