运行 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 启动它们时测试 运行 正常的原因.
当 运行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 启动它们时测试 运行 正常的原因.