java - 将 Mockito 与 Java11 一起使用时出现异常

标签 java mockito java-11 powermockito byte-buddy

我们正在从 Java 8 升级到 11。完成所有必要的 SDK 更改后,我开始使用 Maven 运行单元测试。所有使用 Mockito 的测试都会失败并显示

java.lang.ClassCastException: 
class org.mockito.codegenEventapiManager$MockitoMock$1091821173 cannot be cast to class
org.mockito.internal.creation.bytebuddy.MockAccess
(org.mockito.codegenEventapiManager$MockitoMock$1091821173 is in unnamed module of loader
org.powermock.core.classloader.javassist.JavassistMockClassLoader @1473b8c0;
org.mockito.internal.creation.bytebuddy.MockAccess is in unnamed module of loader 'app')
at org.mockito.internal.creation.bytebuddy.SubclassByteBuddyMockMaker.createMock(SubclassByteBuddyMockMaker.java:48)
    at org.mockito.internal.creation.bytebuddy.ByteBuddyMockMaker.createMock(ByteBuddyMockMaker.java:25)
    at org.powermock.api.mockito.mockmaker.PowerMockMaker.createMock(PowerMockMaker.java:41)
    at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:35)
    at org.mockito.internal.MockitoCore.mock(MockitoCore.java:62)
    at org.mockito.Mockito.mock(Mockito.java:1896)
    at org.mockito.Mockito.mock(Mockito.java:1805)
    [...line where we cal Mockito, rest is ommitted]

这可能与某些依赖项中的版本号不匹配有关吗?

我们正在使用

mockito-core 2.24.0, excluding byte-buddy, byte-buddy-agent and objenesis
powermock-module-testng 2.0.4 (excluding above)
powermock-api-mockito2 2.0.4
objenesis 3.1
byte-buddy 1.9.7
byte-buddy-agent 1.9.7

模拟类很简单:

EventapiManager mockManager = Mockito.mock(EventapiManager.class);

模拟类本身是公共(public)的,并且在 Java 8 上一切正常。

最佳答案

我以一种意想不到的方式解决了我的问题:在谷歌搜索解决方案时,我遇到了 this评论,它描述了我的另一个失败的测试。在该测试装置中,我们确实使用了注释中描述的 PowerMock 注释,但没有建议忽略任何包。所以我添加了它们,制作了被忽略的包的完整列表:

@PowerMockIgnore({"javax.management.*", "javax.script.*", "com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "org.w3c.*"})

这神秘地解决了所有故障,包括上面的固定装置位于不同包中的故障。

关于java - 将 Mockito 与 Java11 一起使用时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59935340/

相关文章:

java - 使用 Mockito 进行单元测试

java - 无法模拟 Quarkus、NullPointer 异常且找不到相关导入

Java 11/IntelliJ : Module not found

java - Android 线程安全的 SharedPreferences

java - Android Studio 布局编辑器无法呈现自定义 View

junit - 如何使用 Mockito 测试 void 方法

java - Jacoco 代码覆盖率随着迁移到 Java 11 而下降

java - 为什么 'For each' 不在 Java 中未初始化的数组上循环

java - @onetoone 和 @EmbeddedId

java - Jquery Ajax表单提交成功前如何刷新页面?