Powermock: java.lang.ClassCastException - PullRequest
       64

Powermock: java.lang.ClassCastException

0 голосов
/ 04 ноября 2019

Я обновляю свою кодовую базу до 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.*" })

Любая помощь очень ценится.

...