首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使Powermock与Dexmaker一起工作

如何使Powermock与Dexmaker一起工作
EN

Stack Overflow用户
提问于 2015-01-14 22:02:09
回答 3查看 2.5K关注 0票数 8

我试图将Powermock作为我的build.gradle测试的依赖项,使用以下build.gradle配置:

代码语言:javascript
复制
dependencies{
    compile 'com.android.support:appcompat-v7:21.0.+'
    androidTestCompile('org.mockito:mockito-core:1.9.5')
    androidTestCompile('com.google.dexmaker:dexmaker:1.2')
    androidTestCompile('com.google.dexmaker:dexmaker-mockito:1.2')
    androidTestCompile('org.powermock:powermock-module-junit4:1.5.5') {
        exclude module: 'junit'
    }
    androidTestCompile('org.powermock:powermock-api-mockito:1.5.5') {
        exclude module: 'mockito-all'
    }
}

然而,编译器正在抱怨

代码语言:javascript
复制
Error:Gradle: Execution failed for task ':app:packageDebugTest'.
> Duplicate files copied in APK mockito-extensions/org.mockito.plugins.MockMaker
    File 1: ~/.gradle/caches/modules-2/files-2.1/com.google.dexmaker/dexmaker-mockito/1.2/b99884a4c6ef6335ba376f79aa79632b2421c17c/dexmaker-mockito-1.2.jar
    File 2: ~/.gradle/caches/modules-2/files-2.1/com.google.dexmaker/dexmaker-mockito/1.2/b99884a4c6ef6335ba376f79aa79632b2421c17c/dexmaker-mockito-1.2.jar

查看jar结构时,我注意到Dexmaker和Powermock都在mockito-extensions中声明了一个mockito-extensions

什么是MockMaker?它们有何不同?最重要的问题是:是否有可能让Powermock与Dexmaker很好地工作?

提前谢谢。任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-15 03:22:27

MockMaker是一个胶水模块,集成了Mockito的右旋制造商。它完成了Mockito使用Dalvik .dex文件而不是JVM .class文件生成具体类所必需的工作。

Powermock可能会与Dexmaker一起工作,但它不太可能使用先进的Powermock特性。特别是Powermock 宣传这个

PowerMock使用自定义的类加载器和字节码操作来模拟静态方法、构造函数、最终类和方法、私有方法、删除静态初始化器等等。

自定义类加载程序不太可能在dalvikvm上工作。

票数 10
EN

Stack Overflow用户

发布于 2016-12-01 15:50:28

你可以试着把这个放在你的build.gradle里,它解决了同样的问题。

代码语言:javascript
复制
android{
...

packagingOptions{
    exclude 'mockito-extensions/org.mockito.plugins.MockMaker'
}

...

}
票数 3
EN

Stack Overflow用户

发布于 2015-02-04 09:58:53

我也遇到了同样的问题,我刚刚找到了解决方案这里。这需要一些手工操作,您必须自己修改jar文件。

因此,恩帕里哈尔的建议如下。

  1. 备份powermock mockito-1.5.5.jar
  2. 将powermock mockito-1.5.5.jar重命名为powermock mockito-1.5.5.zip
  3. 解压缩powermock mockito-1.5.5.zip
  4. cd powermock api-mockito-1.5.5/
  5. rm -rf mockito扩展
  6. jar cf powermock api-mockito-1.5.5.jar META/ org/
  7. 把新的罐子放进你的套筒里。

这个解决方案对我有效。如果对你也有用的话,请告诉我。

而且,我可以看到我们使用的是相同的依赖项。在我的例子中,我必须手动移除hamcrest.jar和objenesis.jar,因为存在confilcts。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27953270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档