使用./gradlew connectedDebugAndroidTest
运行Espresso测试时,我们遇到了此问题:
com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException:方法ID不在[0, 0xffff]:65536
由于我们在主应用程序中使用Multidex并且仅在已测试的测试中添加Espresso依赖项,因此我们无法理解为什么它不起作用:·(此外,如果我们通过IntelliJ运行测试Gradle,它起作用:·|
顺便说一句,我们需要通过Gradle运行它们以在CI工具上自动化它们。
更多信息? Google问题跟踪器上有相关问题的链接:https://issuetracker.google.com/issues/37017515:悲伤:
答案 0 :(得分:3)
任务connectedDebugAndroidTest
将尝试为项目中的每个模块构建测试apks,因此如果您的项目有多个模块,则需要在每个模块中启用multidex。这通常是设置
android.defaultConfig.multiDexEnabled true
每个模块在build.gradle
中。
如果您不尝试执行任务中的任务,则可以跳过所有这些没有任何测试的模块。例如,如果只有app
模块具有检测测试,则可以执行app:connectedDebugAndroidTest
以避免可能的多索错误。这实际上是Android Studio默认创建的运行配置,也可能是您从IDE启动测试时运行良好的原因。