运行时错误PowerMock + Mockito:ProxyFrameworkImpl无法位于类路径中

nsv*_*vir 5 java android mockito powermock gradle

我正在尝试将PowerMock与Android InstrumentTestCase一起使用由于我的测试在Android设备上运行,因此需要将库添加到apk中.

我遇到了powermock + mockito和Dex文件的大问题.我的依赖项中只有powermock + mockito的运行时错误:

org.powermock.api.extension.proxyframework.ProxyFrameworkImpl could not be located in classpath.
Run Code Online (Sandbox Code Playgroud)

如果我包含cglib/cglib-nodep(在答案中建议),则会出现编译错误:

com.android.dex.DexException: Multiple dex files define Lnet/sf/cglib/beans/BeanCopier$BeanCopierKey
Run Code Online (Sandbox Code Playgroud)

这是我的gradle.build的一部分:

androidTestCompile 'com.android.support.test:runner:0.3'
androidTestCompile 'org.powermock:powermock-api-mockito:1.6.4'
androidTestCompile 'org.powermock:powermock-module-junit4:1.6.4'
androidTestCompile 'cglib:cglib-nodep:3.2.0'
androidTestCompile 'cglib:cglib:3.2.0'
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

提前致谢!

小智 5

我还尝试使用PowerMock for Android仪器测试,并遇到了同样的问题.

这是我在PowerMock github上发现的

如果您在设备上运行PowerMock,PowerMock将无法在Android上运行,因为PowerMock正在使用JVM字节代码操作.如果你在JVM上运行它,它将工作.

所以,我认为PowerMock仅适用于Android上的单元测试.