Запуск gradle connectedAndroidTest на определенном устройстве
Как запустить connectedAndroidTest
на конкретном устройстве?
Я бы ожидал чего-то вроде:
./gradlew connectedAndroidTest -DconnectedAndroidTest.device=XXXX
У нас есть несколько устройств, подключенных к нашему CI-серверу, и я не могу найти никакой документации о том, как настроить таргетинг на определенное подключенное устройство.
connectedAndroidTest
выполняет тесты на всех подключенных устройствах в настоящее время.
Спасибо.
Ответы
Ответ 1
Не поддерживается. Документация для connectedCheck
на http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Android-tasks, которая делегирует connectedAndroidTest
для этих видов автоматизированных тестов, не связанных с UI, явно заявляет:
Выполняет проверки, для которых требуется подключенное устройство или эмулятор. Они будут работать на всех подключенных устройствах параллельно.
Существует запрос функции для выбора отдельных устройств; вы можете отслеживать его прогресс на https://code.google.com/p/android/issues/detail?id=66129
Ответ 2
Я создал "хак", чтобы это сделать. Поместите этот блок в раздел android
вашего build.gradle, а затем вы должны установить переменную ANDROID_HOME
env в папку sdk и переменную UNIT_TESTS_DEVICE_ID
env с серийным номером устройства, на которое вы хотите запустить тесты.
deviceProvider(new com.android.builder.testing.ConnectedDeviceProvider(file(System.getenv("ANDROID_HOME") + File.separator + "platform-tools" + File.separator + "adb")) {
public String getName() {
return "singleDevice"
}
public List<? extends com.android.builder.testing.api.DeviceConnector> getDevices() {
List<com.android.builder.testing.api.DeviceConnector> devices = super.devices;
List<com.android.builder.testing.api.DeviceConnector> toReturn = new ArrayList<>();
String deviceSerialNum = System.getenv("UNIT_TESTS_DEVICE_ID");
devices.each {
if (it.getSerialNumber().equals(deviceSerialNum)) toReturn.add(it);
}
if (toReturn.isEmpty()) {
throw new RuntimeException("Device for unit tests not found!");
}
return toReturn;
}
})
Затем вы используете задачу singleDeviceAndroidTest{Variant}
для запуска тестов. Проверено только на gradle плагине версии 1.0.0.
Ответ 3
выглядит как будущая версия в соответствии с этим фрагментом кода
https://android-review.googlesource.com/#/c/160929/
Ответ 4
Это должно быть возможно сейчас. Просто установите переменную среды ANDROID_SERIAL
на идентификатор устройства, в котором вы хотите, чтобы ваши тесты выполнялись.
Ответ 5
Используйте переменную ANDROID_SERIAL
Вы можете сделать это двумя способами:
1. Установите переменную окружения
# Set once; all following gradlew commands will use this
export ANDROID_SERIAL=1000AB0123456YZ
./gradlew <...>
2. "Установить" только для команды
ANDROID_SERIAL=1000AB0123456YZ ./gradlew <...>
Если вы установили/экспортировали ANDROID_SERIAL (метод # 1), вы можете использовать это, чтобы переопределить это для одной команды.
Заметка
Это работает с идентификаторами эмулятора (например, "эмулятор-5554").