Я обновляю свою кодовую базу до JDK11. Недавно я перешел на:
Версия Mockito - 2.23.4
Версия Powermock - 2.0.2
Я использовал эту ссылку, чтобы проверить, что оба вышеверсии совместимы. Теперь я столкнулся со многими странными проблемами. Один из них:
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, где все работало нормально.
My @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.*" })
Любая помощь очень ценится.