Android-maven-plugin, pruebas de instrumentación y testSize

Estoy usando maven para construir, ejecutar e instrumentación probando mis aplicaciones de Android. El framework de pruebas de Android tiene tres marcos de prueba diferentes: @SmallTest , @MediumTest y @LargeTest y android-maven-plugin tiene capacidad para seleccionar el ámbito de prueba a través de testTestSize o el parámetro test / testSize . Este parámetro puede ser uno de small|medium|large y puede ejecutar las pruebas desde el ámbito relacionado.

Pero, ¿qué puedo hacer si quiero realizar pequeñas y medianas pruebas simultáneamente, no sólo pequeñas o no sólo medio? ¿Existe alguna solución para este problema?

Así es como Android SDK está diseñado y se supone que funciona en este momento, de acuerdo con InstrumentationTestRunner API doc :

Ejecutando todas las pruebas pequeñas: adb shell am instrumento -w -e tamaño pequeño com.android.foo/android.test.InstrumentationTestRunner

Ejecución de todas las pruebas de medio: adb shell am instrumento -w -e tamaño medio com.android.foo/android.test.InstrumentationTestRunner

Ejecución de todas las pruebas de gran tamaño: adb shell am instrumento -w -e tamaño grande com.android.foo/android.test.InstrumentationTestRunner

Incluso si utiliza el comando liso adb para ejecutar su prueba, tiene que usar dos procesos para ejecutar la prueba pequeña y media por separado, una tras otra. Maven Plugin de Android es sólo otro envoltorio del comando adb, por lo que no hay forma de alterar el comportamiento predeterminado a través de la configuración de plugin de AFAIK.


Si lee el InstrumentationTestRunner API doc con más cuidado, notará que existe un uso interesante del comando:

Filtro de ejecución de prueba a las pruebas con la anotación dada: adb shell am instrumento -w -e anotación com.android.foo.MyAnnotation com.android.foo/android.test.InstrumentationTestRunner

Si se utiliza con otras opciones, la prueba resultante contendrá la unión de las dos opciones. Por ejemplo "-e tamaño grande -e anotación com.android.foo.MyAnnotation" se ejecutarán sólo las pruebas con las anotaciones LargeTest y "com.android.foo.MyAnnotation".

La configuración de la anotación se agrega como API experimental (marcada como @hide, para más detalles consulte este historial de versiones ) y no se ha documentado en la lista de opciones del instrumento am . Teóricamente puede crear su propia clase de anotación (vea SmallTest.java como ejemplo), marque todo @MediumTest junto con su @CustomizedTest y utilice tanto el tamaño -e como la anotación -e para lograr lo que desea: ejecute las pruebas de unión de dos anotaciones simultáneamente, Todo en un comando.

Lamentablemente, android-maven-plugin no soporta la configuración de anotaciones, vea la documentación del complemento y el código fuente más reciente . Una posible solución consiste en utilizar exec-maven-plugin para ejecutar el comando plain adb shell am instrument .

Espero que esto tenga sentido.

Para usar el tamaño de prueba de maven-android, he creado una variable en pom.xml:

 ... <properties> <config.build.testSize>medium</config.build.testSize> </properties> ... 

Y en la construcción, a seguir:

 <build> <pluginManagement> <plugins> <plugin> <groupId>com.jayway.maven.plugins.android.generation2</groupId> <artifactId>android-maven-plugin</artifactId> ... <configuration> <test> <testSize>${config.build.testSize}</testSize> </test> </configuration> ... </plugin> </plugins> </pluginManagement> </build> 

Supongo que también puede llegar a esto dando el parámetro android.test.testSize a maven (como mvn install -Dandroid.test.testSize = medium)

Por favor corrija esta variable de maven si estoy equivocado, no encontré en doc todavía. BR, M.

  • No obtener fuentes procesadas (generadas) de anotación compiladas en apk, usando maven
  • Android: Dex no puede analizar código de byte de versión 52
  • ¿Por qué falla Adb con el error ?
  • Excepción en el subproceso "pool-1-thread-1" java.lang.NoClassDefFoundError: org / eclipse / aether / spi / connector / Transfer $ Estado
  • Gradle maven dependencia no se encuentra si el complemento es android-library
  • Cómo obtener cobertura de código en Android usando Maven (android-maven-plugin)
  • Maven se niega a descargar una dependencia empacada desde un repositorio remoto
  • Dependencia de la biblioteca de Android Gradle con la dependencia de la biblioteca mediante Nexus
  • Cómo convertir mi proyecto de Android en un proyecto de maven
  • Intellij 12 maven library Android Problema de RestTemplate que procesa javax / xml / parser / DocumentBuilder.class
  • ¿Qué beneficios ofrece Maven (sobre hormigas) para la construcción de proyectos para Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.