When running Espresso tests with ./gradlew connectedDebugAndroidTest
, we're having this issue:
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
As we're using Multidex at the main app and just adding the Espresso dependencies on the instrumented test one, we don't get why it doesn't work :·( In addition, if we run the tests via IntelliJ instead of Gradle, it works :·|
By the way, we need to run them via Gradle to automate them on the CI tool.
More information? There's a link to a related issue on Google's issue tracker: https://issuetracker.google.com/issues/37017515 :sad:
The task connectedDebugAndroidTest
will try to build test apks for every module in the project, so if you project has multiple modules, you need to enable multidex in every one of them. This is usually done setting
android.defaultConfig.multiDexEnabled true
in build.gradle
for each module.
You could skip all of this for modules that don't have any tests if you just don't try to execute the task in those. e.g, if only the app
module has instrumentation tests, you could execute app:connectedDebugAndroidTest
instead to avoid the possible multidex errors. This is actually what the run configuration created by Android Studio does by default, and probably the reason why your tests are running just fine when you launch them form the IDE.
来源:https://stackoverflow.com/questions/43756939/running-a-multidexed-espresso-apk