鉴于Foo类:
public class Foo {
private Unmarshaller unmarshaller;
public Foo(Unmarshaller unmarshaller) {}
}
测试失败后:
@Test
public void test() {
Foo packagingJobSource2 = mock(Foo.class);
}
...有错误:
org.mockito.exceptions.base.MockitoException:
Mockito cannot mock this class: class com.bell.cts.fonse.vod.streaming.services.adapter.cron.avcm.packagingjob.loading.xmlstorage.Foo.
Mockito can only mock non-private & non-final classes.
If you're not sure why you're getting this error, please report to the mailing list.
Java : 9
JVM vendor name : Oracle Corporation
JVM vendor version : 9.0.1+11
JVM name : Java HotSpot(TM) 64-Bit Server VM
JVM version : 9.0.1+11
JVM info : mixed mode
OS name : Mac OS X
OS version : 10.13.2
我尝试使用JDK 8而不是9,它工作正常。我不知道它为什么会失败,也不知道我怎么能做到这一点。
当Unmarshaller
是依赖项时,问题就会发生。如果您将其更改为String
之类的其他类型,则可以...
答案 0 :(得分:3)
同样可能的原因是{<3}}在 类路径 上编译或运行代码时。
如果您依赖于当前的类路径而不是(计划)迁移到使用Java平台模块系统(JPMS),您可以使用迁移指南中所述的(1)选项以及何时使用运行测试将VM arg添加到执行中:
--add-modules java.xml.bind