Intereting Posts
.jar импорт библиотеки андроидов в проект Xamarin Утилизация Bitmap не освобождает память Сервис, WakeLock Android: Как сделать пусковую установку всегда открывать основное действие, а не активность ребенка? (или иным образом) Android: определение типа безопасности беспроводных сетей в диапазоне (без подключения к ним) Экран входящего вызова Android Удаление AdMob из приложения в Android Studio Как использовать Stetho с Volley? Как работает телефонная книга? Как получить доступ к Drawable при использовании Picasso? Исключение нулевого указателя в намерении камеры, когда я выбираю любую стороннюю камеру. Приложение Ловушка 404 и 500 ошибок при использовании tth DefaultHTTPClient Не удалось получить информацию о подписке из API разработчика Google Play для Android Выйти из Google plus и не работать в android, отображать исключение нулевого указателя «Ваша учетная запись ограничена или заблокирована. Перейдите на сайт www.paypal.com, чтобы решить эту проблему ». Эта ошибка показана при попытке сделать высокоценные платежи

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

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

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

Это неполный ответ на ваш вопрос, поскольку он документирует то, что вы не можете сделать, но 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" }