Ejecución de una prueba de unidad específica con gradle

¿Existe alguna manera de ejecutar una prueba de unidad específica de Android con Gradle? He intentado

gradle -Dtest.single=UnitTestName connectedInstrumentTest 

Pero parece que ejecuta todas las pruebas en el paquete.

Gracias de antemano, Iván.

El patrón es -D<testTaskName>.single=<TestClass> por lo que en su ejemplo debe ser:

 gradle -DconnectedInstrumentTest.single=UnitTestName connectedInstrumentTest 

NOTA: Esta respuesta está obsoleta. Debe utilizar el interruptor --tests en las versiones más recientes de Gradle. (Ver otras respuestas para una explicación)

El uso de test.single parece estar obsoleto. La nueva forma correcta de hacerlo es

 ./gradlew :<module>:test --tests <pattern> 

Donde <pattern> podría ser algo como:

  • com.example.MyTest para ejecutar todos los métodos de prueba en com.example.MyTest
  • *MyTest para coincidir con cada método en cada clase cuyo nombre termina con MyTest
  • *.MyTest.myMethod para ejecutar un método de prueba específico en la clase MyTest en cualquier paquete

Si tiene una compilación de varios proyectos, asegúrese de dar la ruta del módulo antes de la tarea de test ; De lo contrario obtendrá un mensaje de error engañoso cuando busque su patrón de prueba en cada subproyecto.

Nada de esto está documentado en el sitio de Gradle donde pudiera encontrarlo.

Esto funciona si está utilizando un instrumentationTestRunner :

 ./gradlew test -Pandroid.testInstrumentationRunnerArguments.class='<pkg>.YourClassName' 

Usando gradle 2.10 y plugin androide gradle 2.0.0-beta2

Desde Android gradle plugin 1.1.0-rc1, se puede ejecutar una sola clase de prueba usando --tests flag ejecutando:

 ./gradlew testDebug --tests=com.example.MyTest 

Consulte http://tools.android.com/tech-docs/unit-testing-support#TOC-Running-from-Gradle

Tienes que ver esto.

https://github.com/JCAndKSolutions/android-unit-test

Hice un problema en este repositorio github, y este tipo resolvió mi problema y subir a maven, por lo que en mi archivo build.gradle uso este complemento.

Las instrucciones están escritas en su repositorio. Usted puede seguirla fácilmente.

Después de usar este plugin de prueba de unidad de android, puedo usar como

 ../gradlew -Dtest.single=SomeTest test 

o

 ../gradlew -Dtest.single=SomeTest clean check 

Ahora está funcionando y sólo podría ejecutar las pruebas específicas que quiero

No debe olvidarse de especificar un nombre de variante de construcción después de la declaración de propiedad de test como

-Dtest<buildVariantName>=<yourTestName> .

Al igual que si tiene un tipo de compilación de debug que le da variante de debug después de la compilación, si desea ejecutar una prueba sólo para esta variante de construcción, debe declarar un comando como este:

./gradlew -DtestDebug=UnitTestName testDebug

La respuesta de Erdi no funcionó para mí, pero tengo un padre soltero para todas mis clases de prueba, así que pude hacer esto:

 public abstract class BaseEspressoTest<T extends Activity> extends ActivityInstrumentationTestCase2<T> { //... @Override protected void runTest() throws Throwable { if(getClass().getSimpleName().equals("MyTestClassName")) { super.runTest(); } } //... } 

Esto ejecuta sólo MyTestClassName . Podemos extenderla más lejos para ejecutar solamente método (o métodos) de prueba específicos:

 public abstract class BaseEspressoTest<T extends Activity> extends ActivityInstrumentationTestCase2<T> { //... @Override protected void runTest() throws Throwable { if("MyTestClassName".equals(getClass().getSimpleName()) && "testMethodName".equals(getName())) { super.runTest(); } } //... } 
  • ¿Puedo usar Cobertura en pruebas de unidad con PowerMock?
  • ActivityUnitTestCase arroja RuntimeException cuando se ejecuta con AndroidJUnitRunner
  • Combine la cobertura jacoco de androidTest y pruebe
  • Android: Unidad de pruebas de aplicaciones Android con Robolectric y Mockito
  • ¿Cómo forzar un cambio de configuración en una prueba Android Robolectric?
  • Separar las pruebas de integración de las pruebas unitarias en Android Studio
  • Pruebas de escritura para aplicaciones Flow and Mortar
  • Prioridad de hilo: 'prueba de unidad'
  • `RenamingDelegatingContext` está obsoleto. ¿Cómo probamos SQLite db ahora?
  • Cómo correctamente mock HttpGet llamada en la prueba de Android
  • ¿Hay alguien por ahí usando Robolectric sin Maven en IntelliJ?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.