Ejecución de gradle's connectedAndroidTest en un dispositivo específico

¿Cómo se ejecuta connectedAndroidTest en un dispositivo en particular?

Yo esperaría algo así como:

 ./gradlew connectedAndroidTest -DconnectedAndroidTest.device=XXXX 

Tenemos una serie de dispositivos conectados a nuestro servidor CI y no puedo encontrar ninguna documentación sobre cómo orientar un dispositivo conectado específico.

connectedAndroidTest ejecuta las pruebas en TODOS los dispositivos conectados actualmente.

Gracias.

No es compatible. La documentación de connectedCheck en http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Android-tasks , que delega a connectedAndroidTest para este tipo de dispositivos que no son UI- Pruebas automatizadas, establece explícitamente:

Ejecuta comprobaciones que requieren un dispositivo o emulador conectado. Se ejecutarán en todos los dispositivos conectados en paralelo.

Hay una solicitud de característica para la capacidad de seleccionar dispositivos individuales; Puede seguir su progreso en https://code.google.com/p/android/issues/detail?id=66129

He creado un "hack" para poder hacerlo .. poner este bloque en la sección android de su build.gradle , y luego tienes que establecer la variable ANDROID_HOME env ANDROID_HOME a la carpeta sdk, y la variable UNIT_TESTS_DEVICE_ID env con el serial Número del dispositivo en el que desea ejecutar las pruebas.

 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; } }) 

A continuación, utilice la tarea singleDeviceAndroidTest{Variant} para ejecutar las pruebas. Probado sólo en el plugin gradle versión 1.0.0.

Parece una versión futura de acuerdo con este fragmento de código https://android-review.googlesource.com/#/c/160929/

  • Cómo cambiar / cambiar testInstrumentationRunner dinámicamente con gradle
  • Cambiar el nombre de apk con Gradle
  • Estudio androide BaseGameUtils
  • BuildConfig.DEBUG siempre false al crear proyectos de biblioteca con gradle
  • NoSuchMethodError si estoy usando okhttp 2.0 y la última actualización?
  • Errores de Gradle en Android Studio
  • ¿Cómo configurar el nivel de registro de depuración y liberación para Retrofit?
  • Gradle Android Build Project Error: No se pudo encontrar el recurso de metadatos
  • Anula la versión de Java cuando construye un proyecto Cordova con gradle
  • Android: Skip Gradle "testClasses" tarea para un proyecto de dependencia
  • Proyecto de actualización de Android-Studio con cambios de build.gradle
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.