Android Gradle запускает тесты на не-отладочные сборки

У меня есть проект с тремя различными типами построения: debug, beta и release. Мой тестовый пакет всегда создан для отладочных сборников, но QA использует бета-сборку, и мы хотим, чтобы QA выполнял эти тесты на своем огромном массиве устройств.

Я пытаюсь создать тест apk для QA, который подписан тем же ключом, что и бета-версия. Просматривая документацию Android-Gradle, я не вижу ничего, что говорило бы мне, что я не могу этого сделать, но я не вижу, чтобы это настроить. В любом случае, я могу настроить, какое хранилище ключей используется при сборке теста apk? Или существует способ создания неподписанного теста apk?

Solutions Collecting From Web of "Android Gradle запускает тесты на не-отладочные сборки"

Это неполный ответ на ваш вопрос, поскольку он документирует то, что вы не можете сделать, но connectedAndroidTest androidTest , которая запускает тесты androidTest в вашем проекте, жестко запрограммирована для работы с типом сборки debug , и я не См. Способ указать его на другой тип сборки.

Принимая советы, есть ли способ перечислить зависимости задач в Gradle? И изучение дерева зависимостей задачи, если вы запустите:

 ./gradlew tasks --all 

Вы получите это в своем выпуске:

 Verification tasks ------------------ app:check - Runs all checks. [app:lint] app:connectedAndroidTest - Installs and runs the tests for Build 'debug' on connected devices. [app:assembleDebug, app:assembleDebugTest] app:connectedCheck - Runs all device checks on currently connected devices. [app:connectedAndroidTest] app:deviceCheck - Runs all device checks using Device Providers and Test Servers. 

Документация для connectedAndroidTest задачиAndroidTest утверждает, что она запускает тесты против debug , а зависимости задачи (которые вы видите с флагом -all ) подтверждают, что задача зависит от assembleDebug .

Добавление дополнительных типов сборки и вкусов, похоже, не влияет на зависимость от встроенного типа debug .

Возможно, что с большим Gradle-fu, чем у меня, вы можете переделать задачи, чтобы тесты зависели от другого типа сборки, но это может быть хрупким, поскольку оно зависит от того, что не поддерживается API в Плагин Android Gradle.

Чтобы ответить на ваш вопрос наиболее прямо, однако, если все, что вам нужно, – это запустить тесты против сборки с помощью другого сертификата, вы можете изменить конфигурацию подписи на своей сборке debug чтобы использовать бета-сертификат:

 android { signingConfigs { beta { keyAlias 'key' keyPassword 'password' storeFile file('/path/to/beta_keystore.jks') storePassword 'password' } } buildTypes { debug { signingConfig signingConfigs.beta } beta { signingConfig signingConfigs.beta } } } 

Я тестировал его, и я могу запускать целевые объекты androidTest против отладочных сборников, которые используют пользовательское хранилище ключей таким образом. Однако я сомневаюсь, что это решает вашу проблему, потому что я подозреваю, что вы хотите запустить свои тесты против бета- сборки , а не отладочной сборки с бета- сертификатом .

Теперь вы можете указать это на другую цель, я не знаю, когда это произошло, но из документов:

В настоящее время тестируется только один тип сборки. По умолчанию это тип отладки Build, но он может быть перенастроен с помощью:

 android { ... testBuildType "staging" } 

Чтобы добавить источник тестирования для вашего варианта сборки, выполните следующие действия:

  • В окне «Проект» слева щелкните раскрывающееся меню и выберите представление «Проект».
  • В соответствующей папке модуля щелкните правой кнопкой мыши папку src и выберите «Создать»> «Каталог».
  • Для имени каталога введите «androidTestVariantName». Например, если у вас есть вариант сборки под названием «MyFlavor», тогда имя каталога shoulbe «androidTestMyFlavor». Затем нажмите «ОК».
  • Щелкните правой кнопкой мыши новый каталог и выберите «Создать»> «Каталог». Введите «java» в качестве имени каталога и нажмите «ОК».

Теперь вы можете добавить тесты к этому новому исходному набору, выполнив описанные выше шаги, чтобы добавить новый тест. Когда вы достигнете диалогового окна «Выбрать папку назначения», выберите новый вариант тестового источника.

src/androidTest/ тесты в src/androidTest/ source разделяются всеми вариантами сборки. При создании тестового APK для варианта «MyFlavor» вашего приложения Gradle сочетает в себе как src/androidTest/ и src/androidTestMyFlavor/ исходные наборы.

Другой способ – поместить следующую строку в конфигурацию по умолчанию.

В настоящее время тестируется только один тип сборки. По умолчанию это тип отладки Build, но он может быть перенастроен с помощью:

 android { ... testBuildType "staging" }