在build.gradle中加载espresso web和core时如何解决重复错误?

时间:2016-09-15 13:35:59

标签: android android-studio gradle android-gradle android-espresso

我尝试使用Android Espresso Web进行自动化测试。

将其添加到build.gradle文件后,如下所示,我得到一个" DuplicateFileException"异常。

根据API,两个依赖项都应该出现在build.gradle文件中,所以我不明白为什么会出现重复异常以及如何解决它。

Error:Execution failed for task ':CompanyAAA:transformResourcesWithMergeJavaResForStagingDebugAndroidTest'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/maven/com.google.guava/guava/pom.properties
     File1: /Users/mayabechler-speicher/CompanyAAA-Android/CompanyAAA/build/intermediates/exploded-aar/com.android.support.test.espresso/espresso-web/2.2.2/jars/classes.jar
     File2: /Users/mayabechler-speicher/CompanyAAA-Android/CompanyAAA/build/intermediates/exploded-aar/com.android.support.test.espresso/espresso-core/2.2.2/jars/classes.jar

[4:24]  
// Espresso core
   androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'

   // Espresso web
   androidTestCompile 'com.android.support.test.espresso:espresso-web:2.2.2'

知道如何解决这个错误吗?

1 个答案:

答案 0 :(得分:0)

根据Google的Android测试支持库示例,如果您的现有应用依赖于网络视图,则不需要同时声明这两者。

检查此配置:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion rootProject.buildToolsVersion
    defaultConfig {
        applicationId "com.example.android.testing.espresso.web.BasicSample"
        minSdkVersion 10
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    lintOptions {
        abortOnError false
    }
    productFlavors {
    }
    packagingOptions {
      exclude 'META-INF/maven/com.google.guava/guava/pom.properties'
      exclude 'META-INF/maven/com.google.guava/guava/pom.xml'
    }
}

dependencies {
    // App dependencies
    compile 'com.android.support:support-annotations:' + rootProject.supportLibVersion;
    compile 'com.google.guava:guava:18.0'
    // Testing-only dependencies
    // Force usage of support annotations in the test app, since it is internally used by the runner module.
    androidTestCompile 'com.android.support:support-annotations:' + rootProject.supportLibVersion;
    androidTestCompile 'com.android.support.test:runner:' + rootProject.runnerVersion;
    androidTestCompile 'com.android.support.test:rules:' + rootProject.rulesVersion;
    androidTestCompile 'com.android.support.test.espresso:espresso-web:' + rootProject.espressoVersion;
}
     

来自:https://github.com/googlesamples/android-testing/blob/master/ui/espresso/WebBasicSample/app/build.gradle

如果您需要两者,请打开build.gradle文件并添加:

packagingOptions {
    exclude 'META-INF/maven/com.google.guava/guava/pom.properties'
    exclude 'META-INF/maven/com.google.guava/guava/pom.xml'
}

应该有效