unitarias unit test studio pruebas hacer ejemplo create como automatizadas app android unit-testing gradle

android - unit - Ejecutar una prueba de unidad específica con gradle



test app android (8)

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

gradle -Dtest.single=UnitTestName connectedInstrumentTest

pero parece ejecutar todas las pruebas en el paquete.

Gracias de antemano, Ivan.



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

gradle -DconnectedInstrumentTest.single=UnitTestName connectedInstrumentTest

NOTA: Esta respuesta no está actualizada. Debería usar el --tests en las últimas versiones de Gradle. (ver otras respuestas para una explicación)


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

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

donde <pattern> podría ser algo así como:

  • com.example.MyTest para ejecutar todos los métodos de prueba en com.example.MyTest
  • *MyTest para hacer coincidir todos los métodos de cada clase cuyo nombre termine 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 multiproyecto, asegúrese de proporcionar la ruta del módulo antes de la tarea de test ; de lo contrario, recibirá 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 en ningún lugar donde pueda encontrarlo.


Esto funciona si estás usando un instrumentationTestRunner :

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

Uso de gradle 2.10 y Android gradle plugin 2.0.0-beta2


La respuesta de Erdi no funcionó para mí, pero tengo una madre soltera 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 solo ejecuta MyTestClassName . Podemos extenderlo más para ejecutar solo métodos de prueba específicos (o métodos):

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(); } } //... }


No debe olvidar especificar un nombre de variante de compilación después de declarar la propiedad de la test como

-Dtest<buildVariantName>=<yourTestName> .

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

./gradlew -DtestDebug=UnitTestName testDebug


Tienes que ver esto.

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

Hice un problema en este repositorio de github, y este tipo resolvió mi problema y lo subió a maven, así que en mi archivo build.gradle utilizo este complemento.

Las instrucciones están escritas en su repositorio. puedes seguirlo fácilmente

Después de usar este plugin android-unit-test, puedo usar

../gradlew -Dtest.single=SomeTest test

o

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

Ahora está funcionando y solo pude ejecutar las pruebas específicas que quiero


el comando Gradle no funciona para mí. Usé a continuación el comando adb mentioened. para esto necesitas construir tu apk primero.

adb shell am instrument -w -r -e paquete -e debug falso .debug.test / android.support.test.runner.AndroidJUnitRunner