莫基托不能依赖Unmarshaller来模拟课堂



给定类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),它可以工作...

默认情况下未解决module java.xml.bind的可能原因。当您在 classPath上编译或运行代码

如果您依靠当前的类路径而不是(计划)迁移到使用Java平台模块系统(JPMS),则可以使用"迁移指南"中所述的(1)选项以及运行时测试将VM ARG添加到执行中,为:

--add-modules java.xml.bind

相关内容

  • 没有找到相关文章

最新更新