运行 Multidexed Espresso .APK

Running a Multidexed Espresso .APK

当 运行ning Espresso 使用 ./gradlew connectedDebugAndroidTest 进行测试时,我们遇到了这个问题:

com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

由于我们在主应用程序中使用 Multidex,并且只是将 Espresso 依赖项添加到已检测的测试应用程序中,因此我们不明白为什么它不起作用:·(此外,如果我们 运行 通过 IntelliJ 而不是 Gradle 进行的测试有效:·|

顺便说一下,我们需要通过 Gradle 运行 它们在 CI 工具上实现自动化。

更多信息?在 Google 的问题跟踪器上有一个 link 相关问题:https://issuetracker.google.com/issues/37017515 :sad:

任务connectedDebugAndroidTest 将尝试为项目中的每个模块构建测试 apk,因此如果您的项目有多个模块,则需要在每个模块中启用 multidex。这通常是设置

android.defaultConfig.multiDexEnabled true

每个模块 build.gradle

对于没有任何测试的模块,如果您只是不尝试执行其中的任务,则可以跳过所有这些。例如,如果只有 app 模块有仪器测试,您可以改为执行 app:connectedDebugAndroidTest 以避免可能的 multidex 错误。这实际上是 Android Studio 创建的 运行 配置默认执行的操作,并且可能是当您从 IDE 启动它们时测试 运行 正常的原因.