Как остановить тестовые прогоны Gradle от деинсталляции приложения? - PullRequest
6 голосов
/ 01 ноября 2019

Если я:

  • Создать совершенно новый проект Android Studio 3.5.1 (Kotlin, API 21, шаблон «Пустая активность»)
  • Запустить приложение изнутриIDE
  • Убедитесь, что приложение установлено и имеет значок запуска
  • Запустите задачу connectedAndroidDebugTest Gradle (из Android Studio или через gradlew)

Приложение заканчивается удалением во время тестового прогона. Я получаю такое поведение, даже если добавляю значение testApplicationId к defaultConfig, чтобы тестовый код использовал другой идентификатор приложения.

Как мне остановить это поведение? Как запустить инструментальные тесты из командной строки, не нарушая установку существующего приложения?

Ответы [ 3 ]

2 голосов
/ 06 ноября 2019

Задача connectedCheck имеет тип DeviceProviderInstrumentTestTask. Для простого теста на одном устройстве используется SimpleTestRunner, который, в свою очередь, использует SimpleTestRunnable для фактического выполнения теста. Здесь вы найдете структуру

try {
    // connect to device
    // install all APKs
    // run tests
} catch(Exception e) {
    // handle error
} finally {
    // get test report
    // uninstall all APKs
    // disconnect from device
}

Я не совсем уверен, нашел ли я самые последние реализации, но такое точное поведение датируется несколькими годами. Поэтому я думаю, что вы не можете достичь того, о чем просите.

2 голосов
/ 04 ноября 2019

Возможно, попробуйте запустить его через adb, например:

adb shell am instrument -w com.android.demo.app.tests/android.support.test.runner.AndroidJUnitRunner

Приложение не будет удалено.

здесь описано более подробно.

1 голос
/ 04 ноября 2019

Прибор устанавливает 2 APK: тестируемый APK и APK с тестовым кодом.

Он также удаляет оба APK перед тем, как попытаться установить новые, и я не знаю, возможно ли предотвратить саму деинсталляцию.

testApplicationId меняет только идентификатор приложения для APKс тестовым кодом (который обычно такой же, как и для основного APK с добавлением «.test») идентификатор приложения тестируемого APK остается прежним. Но можно создать отдельный buildType для тестируемого APK (с точно такой же конфигурацией, что и тип сборки отладки) и использовать его.

Затем connectedAndroidXYZTest можно использовать для запуска тестов (или createXYZCoverageReport).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...