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 代码并重建。 我能够 运行 测试。