2014-01-10 19 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固定,所以只需升級。