1. 程式人生 > >Mockito不能mock final類的解決辦法

Mockito不能mock final類的解決辦法

`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) **多讀書,多分享;多寫作,多整