当我运行基于
android模拟器的测试:
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测试)运行基于非仿真器的测试工作正常.
我相信它是一个包含两次的jar文件,但不知道哪一个以及如何修复.
建议?
编辑
似乎是导致问题的是instrumentTestCompile’junit:junit:4.10’行.但是,当我把它拿出来时,机电测试不能编译.我该如何配置它以便我可以运行基于模拟器和基于roboeletric的测试?
最佳答案 这是因为JUnit 4.10包含了一些Hamcrest类(顽皮).它已在4.11中修复,因此只需升级即可.