8

次の build.gradle 構成を使用して、Powermockを Android テストの依存関係として組み込むことを試みています。

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'
    }
}

ただし、コンパイラは不平を言っています

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 の両方が in を宣言していることに気付きMockMakerましたmockito-extensions

画像

モックメーカーとは?それらはどのように異なりますか?そして最も重要な質問: Powermock を Dexmaker とうまく連携させることは可能ですか?

前もって感謝します。どんな助けでも大歓迎です。

4

3 に答える 3

1

私は同じ問題を抱えていましたが、ここで解決策を見つけました。少し手作業が必要で、jar ファイルを自分で変更する必要があります。

したがって、npariharが示唆するのは次のとおりです。

  1. powermock-api-mockito-1.5.5.jar のバックアップ コピーを作成します。
  2. powermock-api-mockito-1.5.5.jar の名前を powermock-api-mockito-1.5.5.zip に変更します
  3. powermock-api-mockito-1.5.5.zip を解凍します
  4. CD powermock-api-mockito-1.5.5/
  5. rm -rf mockito-extensions
  6. jar cf powermock-api-mockito-1.5.5.jar META-INF/ org/
  7. 新しいjarをlibs folerに入れます。

このソリューションは私にとってはうまくいきました。それがあなたにとってもうまくいくかどうか教えてください。

また、同じ依存関係を使用していることがわかります。私の場合、競合があったため、hamcrest.jar と objenesis.jar を手動で削除する必要がありました。

それが役立つことを願っています。

于 2015-02-04T09:58:53.740 に答える