Mockito是很常用的测试工具,使用过程中可能会遇到下面的问题:
Mockito cannot mock/spy because : - final class
问题重现:
引入该依赖到项目的maven配置如下:
org.mockito
mockito-core
3.3.3
测试代码如下:
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());
}
}
报错信息如下:
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依赖如下:
org.mockito
mockito-inline
3.3.3
重跑测试,问题解决!
欢迎关注微信公众号,将持续为你更新...
多读书,多分享;多写作,多整理。