РЕДАКТИРОВАТЬ: ниже оригинальный пост.Это была первая проблема, с которой я столкнулся, но повторяя мои шаги снова и снова, я получаю разные результаты.В первый раз, когда я попытался запустить свои осколки после публикации этого сообщения, я получил:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':ProgressiveApp:packageInternalStaging'.
> invalid distance too far back
В следующий раз:
> invalid code lengths set
И следующий:
> Unexpected end of ZLIB input stream
Все три проблемы связаны с zip / сжатием.Возможно, это моя основная проблема.
Оригинальный пост ниже:
Я использую AndroidX Espresso 3.1.0 вместе с ANDROIDX_TEST_ORCHESTRATOR.Единственная проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю осколки (для ускорения тестовых запусков), он иногда решает потерпеть неудачу без веской причины.
Например, я открываю три терминала и три эмулятора.Я запускаю один из них в каждом терминале, чтобы запустить три отдельных шарда:
ANDROID_SERIAL=emulator-5554 ./gradlew connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.numShards=3 -Pandroid.testInstrumentationRunnerArguments.shardIndex=0
ANDROID_SERIAL=emulator-5556 ./gradlew connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.numShards=3 -Pandroid.testInstrumentationRunnerArguments.shardIndex=1
ANDROID_SERIAL=emulator-5558 ./gradlew connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.numShards=3 -Pandroid.testInstrumentationRunnerArguments.shardIndex=2
Затем выполняется треть моих тестов на каждом эмуляторе.Так хорошо до сих пор.Через долгое время все они сделаны, и у меня есть хороший HTML-отчет, в котором говорится, что нулевые тесты не пройдены.Я не коснулся своего кода, я не коснулся эмуляторов.Я иду, чтобы коснуться каждого из терминалов.В каждом из них я нажимаю стрелку вверх, чтобы получить последнюю команду, запущенную в этом терминале, а затем ввод, чтобы повторить то, что я только что выполнил.Два эмулятора в порядке и проходят все свои тесты.Третий нет, и дает мне это сообщение об ошибке ниже:
> Task :<snip>:connectedInternalStagingAndroidTest FAILED
[no message defined]
java.lang.RuntimeException: com.android.builder.testing.api.DeviceException:
com.android.ddmlib.InstallException: INSTALL_FAILED_INVALID_APK
at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1431)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: INSTALL_FAILED_INVALID_APK
at com.android.builder.testing.ConnectedDevice.installPackage(ConnectedDevice.java:132)
at com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:147)
at com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:59)
at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
... 4 more
Caused by: com.android.ddmlib.InstallException: INSTALL_FAILED_INVALID_APK
at com.android.ddmlib.Device.installRemotePackage(Device.java:1031)
at com.android.ddmlib.Device.installPackage(Device.java:902)
at com.android.ddmlib.Device.installPackage(Device.java:880)
at com.android.ddmlib.Device.installPackage(Device.java:869)
at com.android.builder.testing.ConnectedDevice.installPackage(ConnectedDevice.java:126)
... 7 more
Почему?Как?Это не имеет никакого смысла.Я нажимаю и снова захожу, а затем он успешно проходит все тесты без проблем.
Моя проблема в том, что этот случайный сбой происходит достаточно, я не могу настроить свои машины для использования шардинга, и, следовательно, не могу ускоритьтестовый процесс для моей команды.