当前位置: 首页 > 知识库问答 >
问题:

Mockito无法模拟依赖于Unmarshaller[duplicate]的类

长孙硕
2023-03-14

给定类别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

我尝试使用JDK8而不是9,它工作得很好。我不知道它为什么会失败,也不知道我怎么才能让它成功。

unmarshaller是依赖项时,就会发生此问题。如果您为其他类型(如string)更改它,它可以正常工作...

共有1个答案

孙梓
2023-03-14

可能的原因是默认情况下不解析模块java.xml.bind。在类路径上编译或运行代码时。

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

--add-modules java.xml.bind
 类似资料:
  • 我在一次测试中试图使用一个模拟类,但出现了以下错误: 在pom中: (也试用了3.0.0版) 车辆等级: 测试类:

  • 我想在类AppleProcessor中测试一个方法: 请注意,Fruit是AppleFruit实现的方法的接口,并且还有一个方法。 我的测试看起来像: 然而,我得到了以下错误:

  • 虽然我看到两个不同的帖子与此错误消息没有任何关系: 错误:(25,17)无法解析:org.mockito:mockito-core:1.10.19 我尝试使用compile、androidTestCompile和testCompile更改Mockito依赖项,并在全局Gradle文件中尝试添加Maven作为存储库,但没有成功。 编辑:我正在使用Android Studio 2.1 这是我的应用程序

  • 我试图使用PowerMockito在我正在测试的代码中模拟java.net.URL类的创建。基本上,我希望防止真正的HTTP请求发生,而是1)在请求发出时检查数据,2)在模拟响应中提供我自己的测试数据。这就是我正在尝试的: 我要测试的代码如下所示: 在前面的测试场景中,我模拟了wlInvokeUrlString以匹配“MyURLString”。我还尝试使用whenNew行的各种其他形式,尝试注入模

  • 为了测试一些遗留代码,我必须使用powermockito。原因是遗留代码没有使用依赖项注入,并且由于某些原因,我们现在无法重构代码。我们正在系统中使用ANT运行testng。我已经配置了构建。xml使用power mock和power mock testng库。我想用powermockito模拟一个构造函数,下面是示例代码。 这次测试失败了,我不知道这里出了什么问题。我还看到下面的链接配置测试与电