Запуск connectedAndroidTest gradle на определенном устройстве
как вы запустите connectedAndroidTest
на определенном устройстве?
Я ожидал бы что-то вроде:
./gradlew connectedAndroidTest -DconnectedAndroidTest.device=XXXX
у нас есть несколько устройств, подключенных к нашему серверу CI, и я не могу найти никакой документации о том, как нацелить конкретное подключенное устройство.
connectedAndroidTest
запускает тесты на всех подключенных устройствах в настоящее время.
спасибо.
5 ответов
это не поддерживается. Документация для connectedCheck
at http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Android-tasks, который делегирует connectedAndroidTest
для этих видов неавтоматизированных тестов на устройстве, явно заявляет:
проверяет, что требует подключенного устройства или эмулятор. Они будут работать на всех подключенных устройствах параллельно.
существует запрос функции для возможности выбора отдельных устройства; вы можете отслеживать его прогресс в https://code.google.com/p/android/issues/detail?id=66129
Я создал "хак", чтобы иметь возможность это сделать.. поместите этот блок в вашего построить.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.
похоже на будущих версиях ПО этот фрагмент кода https://android-review.googlesource.com/#/c/160929/
теперь это должно быть возможно. Просто установите ANDROID_SERIAL
переменная окружения для идентификатора устройства, на котором должны выполняться тесты.
использовать 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), Вы можете использовать это, чтобы переопределить это для одной команды.
Примечание
это работает и с идентификаторами эмулятора (например, "emulator-5554").