NoClassDefFoundError - org/mockito/exceptions/Reporter 使用 Mockito 和 PowerMock 时
NoClassDefFoundError - org/mockito/exceptions/Reporter when Using Mockito and PowerMock
我正在尝试将 Powermock 添加到我使用 Mockito 的应用程序中。
这是我目前在我的 gradle 构建中拥有的内容:
compile("junit:junit:4.12"){force = true}
compile("org.powermock:powermock-api-mockito-common:1.7.0")
compile("org.powermock:powermock-api-mockito2:1.7.0")
compile("org.powermock:powermock-api-support:1.7.0")
compile("org.powermock:powermock-core:1.7.0")
compile("org.powermock:powermock-module-junit4:1.7.0")
compile("org.powermock:powermock-module-junit4-common:1.7.0")
compile("org.powermock:powermock-reflect:1.7.0")
compile("org.javassist:javassist:3.12.0.GA")
compile("org.mockito:mockito-core:2.8.9")
这是我目前的测试文件...
@RunWith(PowerMockRunner.class)
@PrepareForTest(XMLTransaction.class)
public class CloseSummaryOrCloseTrailerResponseTest {
public final static String URL="WL_APPSERVER";
private XMLTransaction xmlTransaction;
@Before
public void initMocks() throws Exception {
xmlTransaction = PowerMockito.spy(new XMLTransaction(URL));
PowerMockito.doNothing().when(xmlTransaction, "initialize");
}
@Test
public void whenCloseSummaryResponseNoErrorExpectCorrectXmlMsgProduced ()
{
...test code here
}
}
我收到错误:
java.lang.NoClassDefFoundError: org/mockito/exceptions/Reporter at
sun.reflect.GeneratedSerializationConstructorAccessor8.newInstance(Unknown
Source) at
java.lang.reflect.Constructor.newInstance(Constructor.java:423) at
org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.newInstance(SunReflectionFactoryInstantiator.java:48)
at
org.powermock.reflect.internal.WhiteboxImpl.newInstance(WhiteboxImpl.java:251)
at org.powermock.reflect.Whitebox.newInstance(Whitebox.java:139)
Reporter class 应该包含在 mockito-core 中。
我需要什么额外的罐子?
我使用此站点查看了 Mockito 和 Powermock 的兼容性:
https://github.com/powermock/powermock/wiki/Mockito#supported-versions
但是我好像少了一些其他的 jar。
更新
检查了那个答案,但它没有解决我的问题。
我改变了
compile("org.powermock:powermock-api-mockito2:1.7.0")
至
compile("org.powermock:powermock-api-mockito2:1.7.0RC2")
现在我得到一个不同的错误:
java.lang.IllegalStateException: Extension API internal error:
org.powermock.api.extension.proxyframework.ProxyFrameworkImpl could
not be located in classpath. at
org.powermock.reflect.proxyframework.ProxyFrameworkHelper.register(ProxyFrameworkHelper.java:35)
这需要什么jar?
对我有用的...是我删除了我的 lib 文件夹中的所有 powermock 罐子,然后使用上面的 gradle 代码并重建。
我能够 运行 测试。
我正在尝试将 Powermock 添加到我使用 Mockito 的应用程序中。 这是我目前在我的 gradle 构建中拥有的内容:
compile("junit:junit:4.12"){force = true}
compile("org.powermock:powermock-api-mockito-common:1.7.0")
compile("org.powermock:powermock-api-mockito2:1.7.0")
compile("org.powermock:powermock-api-support:1.7.0")
compile("org.powermock:powermock-core:1.7.0")
compile("org.powermock:powermock-module-junit4:1.7.0")
compile("org.powermock:powermock-module-junit4-common:1.7.0")
compile("org.powermock:powermock-reflect:1.7.0")
compile("org.javassist:javassist:3.12.0.GA")
compile("org.mockito:mockito-core:2.8.9")
这是我目前的测试文件...
@RunWith(PowerMockRunner.class)
@PrepareForTest(XMLTransaction.class)
public class CloseSummaryOrCloseTrailerResponseTest {
public final static String URL="WL_APPSERVER";
private XMLTransaction xmlTransaction;
@Before
public void initMocks() throws Exception {
xmlTransaction = PowerMockito.spy(new XMLTransaction(URL));
PowerMockito.doNothing().when(xmlTransaction, "initialize");
}
@Test
public void whenCloseSummaryResponseNoErrorExpectCorrectXmlMsgProduced ()
{
...test code here
}
}
我收到错误:
java.lang.NoClassDefFoundError: org/mockito/exceptions/Reporter at sun.reflect.GeneratedSerializationConstructorAccessor8.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.newInstance(SunReflectionFactoryInstantiator.java:48) at org.powermock.reflect.internal.WhiteboxImpl.newInstance(WhiteboxImpl.java:251) at org.powermock.reflect.Whitebox.newInstance(Whitebox.java:139)
Reporter class 应该包含在 mockito-core 中。 我需要什么额外的罐子? 我使用此站点查看了 Mockito 和 Powermock 的兼容性: https://github.com/powermock/powermock/wiki/Mockito#supported-versions
但是我好像少了一些其他的 jar。
更新 检查了那个答案,但它没有解决我的问题。 我改变了
compile("org.powermock:powermock-api-mockito2:1.7.0")
至
compile("org.powermock:powermock-api-mockito2:1.7.0RC2")
现在我得到一个不同的错误:
java.lang.IllegalStateException: Extension API internal error: org.powermock.api.extension.proxyframework.ProxyFrameworkImpl could not be located in classpath. at org.powermock.reflect.proxyframework.ProxyFrameworkHelper.register(ProxyFrameworkHelper.java:35)
这需要什么jar?
对我有用的...是我删除了我的 lib 文件夹中的所有 powermock 罐子,然后使用上面的 gradle 代码并重建。 我能够 运行 测试。