运行 Espresso 测试时./gradlew connectedDebugAndroidTest
,我们遇到了这个问题:
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 :sad:
任务connectedDebugAndroidTest
将尝试为项目中的每个模块构建测试 apk,因此如果您的项目有多个模块,则需要在每个模块中启用 multidex。这通常是完成设置
android.defaultConfig.multiDexEnabled true
in build.gradle
对于每个模块。
对于没有任何测试的模块,如果您不尝试在这些模块中执行任务,则可以跳过所有这些。例如,如果只有app
模块有仪器测试,你可以执行app:connectedDebugAndroidTest
而是为了避免可能出现的多重索引错误。这实际上是 Android Studio 创建的运行配置默认执行的操作,也可能是当您从 IDE 启动测试时运行良好的原因。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)