[英]Exception when using Mockito with Java11
我們正在從 Java 8 升級到 11。在完成所有必要的 SDK 更改后,我開始使用 maven 運行我們的單元測試。 所有使用Mockito
測試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);
模擬類本身是公共的,並且在 Java 8 上一切正常。
我以一種意想不到的方式解決了我的問題:在谷歌搜索解決方案時,我遇到了這條評論,它描述了我進行的另一個失敗的測試。 在那個測試裝置中,我們確實使用了評論中描述的PowerMock
注釋,但沒有建議那里被忽略的包。 所以我添加了它們,制作了被忽略包的完整列表:
@PowerMockIgnore({"javax.management.*", "javax.script.*", "com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "org.w3c.*"})
這已經神秘地解決了所有故障,包括上述在不同包中具有固定裝置的故障。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.