有時候做單元測試經常需要跳過某些工具類,比如工具類對用戶登錄態的獲取和初始化:
而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: