Mockito
是很經常使用的測試工具,使用過程當中可能會遇到下面的問題:java
Mockito cannot mock/spy because : - final class
微信
問題重現:maven
引入該依賴到項目的maven配置以下:工具
<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>3.3.3</version> </dependency>
測試代碼以下:測試
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()); } }
報錯信息以下:spa
org.mockito.exceptions.base.MockitoException: Cannot mock/spy class com.pkslow.basic.MockitoTest$FinalPumpkin Mockito cannot mock/spy because : - final class
這是由於低版本的mockito
是不能mock
final
類的。code
解決方案:xml
改變mockito
的版本,修改maven依賴以下:get
<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-inline</artifactId> <version>3.3.3</version> </dependency>
重跑測試,問題解決!it
歡迎訪問南瓜慢說 www.pkslow.com獲取更多精彩文章!
歡迎關注微信公衆號<南瓜慢說>,將持續爲你更新...
多讀書,多分享;多寫做,多整理。