Android Gradle Выполнение тестов на не-отладочных сборках

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

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

Ответы

Ответ 1

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

Принимая советы от Есть ли способ перечислить зависимости задач в 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 утверждает, что она запускает тесты с debug, а зависимости задачи (которые вы видите с флагом -all) подтверждают, что задача зависит от assembleDebug.

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

Возможно, что с большим Gradle -fu, чем у меня, вы можете перенастроить задачи, чтобы тесты зависели от другого типа сборки, но это может быть хрупким, поскольку оно связано с тем, что не зависит от того, t поддерживаемый 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, а не отладочной сборки с бета-сертификатом .

Ответ 2

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

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

android {
    ...
    testBuildType "staging" 
}

Ответ 3

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

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

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

Инструментальные тесты в исходном наборе src/androidTest/ разделяются всеми вариантами сборки. При создании тестового APK для варианта "MyFlavor" вашего приложения Gradle объединяет в себя как исходные наборы src/androidTest/, так и src/androidTestMyFlavor/.

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

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

android {
    ...
    testBuildType "staging"
}