我正在将代码库升级到JDK11。我最近搬到了:
Mockito版本-2.23.4
Powermock版本-2.0.2
我使用了this链接来验证上述两个版本是否兼容。 现在,我遇到了许多奇怪的问题。其中之一是:
java.lang.RuntimeException: Invoking the beforeTestMethod method on PowerMock test listener org.powermock.api.extension.listener.AnnotationEnabler@291953c5 failed.
Caused by: java.lang.ClassCastException: class org.powermock.api.easymock.internal.invocationcontrol.EasyMockMethodinvocationControl cannot be cast to class org.powermock.api.mockito.invocation.MockitoMethodinvocationControl (org.powermock.api.easymock.internal.invocationcontrol.EasyMockMethodinvocationControl is in unnamed module of loader org.powermock.core.classloader.javassist.JavassistMockClassLoader @3ac3f6f; org.powermock.api.mockito.invocation.MockitoMethodinvocationControl is in unnamed module of loader 'app')
我在这里没有做任何花哨的事情,与当我将早期Powermock版本与JDK8一起使用时,一切都正常的时候一样,一切都没有改变。
我的@Before
方法类似于:
private Xyz mockXyz = PowerMock.createMock(Xyz.class); //Xyz is a final class
private XyzClient mockXyzClient = PowerMock.createMock(XyzClient.class);
@Before
public void beforeTest() {
expect(mockXyzClient.api()).andReturn(mockXyz).anyTimes();
}
不确定是否有帮助,但是我的测试班有:
@PowerMockIgnore({ "javax.crypto.*","javax.net.ssl.*","javax.management.*","com.sun.org.apache.xerces.*","javax.xml.parsers.*","org.xml.*","org.w3c.dom.*" })
非常感谢您的帮助。