Android Studio 2.3.1。
我在“androidTest”文件夹中写了我的Espresso测试,它运行正常。 今天我在build.gradle中添加了新的依赖项。结果我在尝试启动单元测试时遇到错误:
错误:任务':app:transformClassesWithDexForDevAndroidTest'的执行失败。 com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.dex.DexIndexOverflowException:方法ID不在[0,0xffff]中: 65536
我通过(在build.gradle中)修复此问题:
android {
...
defaultConfig {
...
multiDexEnabled = true
}
dependencies {
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'com.android.volley:volley:1.0.0'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
androidTestCompile "org.mockito:mockito-android:2.7.21"
androidTestCompile "org.powermock:powermock-api-mockito:1.6.6"
androidTestCompile 'org.powermock:powermock-module-junit4:1.6.6'
testCompile 'junit:junit:4.12'
testCompile 'org.powermock:powermock-api-mockito:1.6.6'
testCompile 'org.powermock:powermock-module-junit4:1.6.6'
testCompile "org.mockito:mockito-core:+"
//WireMock
androidTestCompile("com.github.tomakehurst:wiremock:2.6.0") {
exclude group: 'org.apache.httpcomponents', module: 'httpclient'
exclude group: 'org.slf4j', module: 'slf4j-api'
exclude group: 'org.ow2.asm', module: 'asm'
exclude group: 'org.json', module: 'json'
}
}
但是现在Espresso测试无法在Android 4.3上运行。我收到错误:
运行测试
com.myproject.fragment.MyTest #myTestMethod com.myproject.android.dev.test / android.support.test.runner.AndroidJUnitRunner 测试运行失败:由于'java.lang.NoClassDefFoundError'导致仪表运行失败 空测试套件。
我找到了问题的解决方案:
如果你使用Android 5.0-(例如Android 4.3),那么你必须使用Wiremock版 2.0.8-beta
androidTestCompile'com.github.tomakehurst:wiremock:2.0.8-beta'
如果你使用Android 5.0+,你可以使用任何Wiremock版本(例如2.5.0)
androidTestCompile 'com.github.tomakehurst:wiremock:2.6.0'
P.S。也许这是一个Multidex问题。