2014-01-10 20 views
4

当我运行了Android基于仿真的测试:Android的测试: '多DEX文件' 当使用 'gradle这个检查connectedCheck'

gradlew check connectedCheck 

...它失败:

com.android.dx.util.DexException: Multiple dex files define Lorg/hamcrest/Description; 

这里的我的build.gradle文件:

buildscript { 
    repositories { 
     mavenCentral() 
     maven { 
      url 'https://oss.sonatype.org/content/repositories/snapshots/' 
     } 
    } 

    dependencies { 
     classpath 'com.android.tools.build:gradle:0.7.0' 
     classpath 'com.squareup.gradle:gradle-android-test-plugin:0.9.1-SNAPSHOT' 
    } 
} 

apply plugin: 'android' 
apply plugin: 'android-test' 

repositories { 
    mavenCentral() 
    maven { 
     url 'https://oss.sonatype.org/content/repositories/snapshots/' 
    } 
} 

task wrapper(type: org.gradle.api.tasks.wrapper.Wrapper) { 
    gradleVersion = '1.9' 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "18.1" 

    defaultConfig { 
     minSdkVersion 13 
     targetSdkVersion 18 
    } 

    sourceSets { 
     instrumentTest.setRoot('src/test') 
    } 

    lintOptions { 
     abortOnError false 
    } 
} 

dependencies { 
    compile 'com.android.support:support-v4:13.0.+' 
    compile fileTree(dir: 'libs', include: '*.jar') 

    testCompile 'junit:junit:4.10' 
    testCompile 'org.robolectric:robolectric:2.3-SNAPSHOT' 
    testCompile 'com.squareup:fest-android:1.0.+' 
    instrumentTestCompile 'junit:junit:4.10' 
    instrumentTestCompile 'org.robolectric:robolectric:2.3-SNAPSHOT' 
    instrumentTestCompile 'com.squareup:fest-android:1.0.+' 
} 

我正在使用Android Studio,但测试是从命令行运行的。

运行非仿真器的基于Roboelectric的测试(gradlew test)工作正常。

我相信这是一个包含两次的jar文件,但不知道哪一个以及如何修复。 建议?

编辑

看来,它是instrumentTestCompile 'junit:junit:4.10'行导致该问题。但是当我把它拿出来的时候,这个轮机电测试就不能编译了。我应该如何配置它才能运行基于仿真器和基于roboeletric的测试?

+0

你有支持库jar文件在你的libs目录下吗?当我将构建路径jar文件和libs目录(支持库所在的目录)作为依赖关系(在eclipse中)时,我遇到了这个问题。我随意做了,日食认为支持库有两次。 –

+0

同样的问题在这里 – Extranion

回答

2

这是因为JUnit 4.10包含一些Hamcrest类(淘气)。它在4.11固定,所以只需升级。