Mockito不能mock final類的解決辦法
阿新 • • 發佈:2020-05-17
`Mockito`是很常用的測試工具,使用過程中可能會遇到下面的問題:
`Mockito cannot mock/spy because : - final class`
問題重現:
引入該依賴到專案的maven配置如下:
```xml
```
測試程式碼如下:
```java
package com.pkslow.basic;
import org.junit.Assert;
import org.junit.Test;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class MockitoTest {
public static final class FinalPumpkin {
public String getName() {
return "pkslow.com";
}
}
@Test
public void test() {
FinalPumpkin pumpkin = mock(FinalPumpkin.class);
when(pumpkin.getName()).thenReturn("www.pkslow.com");
Assert.assertEquals("www.pkslow.com", pumpkin.getName());
}
}
```
報錯資訊如下:
```java
org.mockito.exceptions.base.MockitoException:
Cannot mock/spy class com.pkslow.basic.MockitoTest$FinalPumpkin
Mockito cannot mock/spy because :
- final class
```
這是因為低版本的`mockito`是不能`mock` `final`類的。
解決方案:
改變`mockito`的版本,修改maven依賴如下:
```xml
```
重跑測試,問題解決!
---
歡迎訪問[南瓜慢說 www.pkslow.com](https://www.pkslow.com/)獲取更多精彩文章!
歡迎關注微信公眾號<**南瓜慢說**>,將持續為你更新...
![](https://img2020.cnblogs.com/other/946674/202005/946674-20200516234510536-2016446473.jpg)
**多讀書,多分享;多寫作,多整