Marco de prueba de gradle de Android: una sola clase

¿Es posible ejecutar una sola clase de prueba usando el nuevo marco de compilación de gradle de Android?

Tengo un paquete de prueba que tiene varias clases de prueba (todas ellas son clases de InstrumentationTestCase). He podido configurar mi archivo build.gradle para ejecutar el paquete de prueba

defaultConfig{ testPackageName "com.company.product.tests" testInstrumentationRunner "android.test.InstrumentationTestRunner" } 

¿Pero hay una manera de probar solamente un caso de prueba en ese paquete? De lo contrario voy a estar usando la edad de edad adb shell am instrument -w .......

PD: No tengo tiempo ahora para cambiar a Roboeléctrico, pero sí veo que es prácticamente el marco defacto hoy en día.

Uso de android.test.InstrumentationTestRunner no, esto no es posible. Usted, sin embargo, tiene opciones:

Corredor de pruebas personalizado

  1. Extienda android.test.InstrumentationTestRunner
  2. Agregue un buildConfigField 'String', 'TEST_NAME', '${testName}' , donde testName es '"${project.properties.get("test")}"'
  3. En tu corredor, solo ejecuta pruebas que coincidan con BuildConfig.TEST_NAME (si es nula, ejecuta todas las pruebas)
  4. Reemplace el testInstrumentationRunner con su corredor personalizado
  5. Ejecutar pruebas con ./gradlew connectedCheck -Ptest=com.example.Test.testSomething

Utilizar cuchara

Spoon es una extensión de prueba excelente que, entre otras cosas (como hermosos informes de pruebas de múltiples dispositivos), le permite ejecutar pruebas individuales. Ya que estás usando gradle, recomiendo el Plugin de Gradle de Cuchara , que tiene un ejemplo de exactamente lo que quieres hacer en su README.

Actualización: Ejecutar pruebas unitarias individuales con el complemento Android Gradle

Con la adición de soporte de pruebas de unidad, Android ahora admite pruebas individuales de ejecución.

Esto es sólo una tarea de anclaje, las tareas de prueba reales se llaman testDebug y testReleas e etc Si desea ejecutar sólo algunas pruebas, utilizando el gradle --tests , puede hacerlo corriendo ./gradlew testDebug --tests='*.MyTestClass' .

Fuente

Edit : También debo añadir que Spoon es un reemplazo para las pruebas en ejecución. No tendrás que modificar nada, excepto algunas líneas en tu script de compilación para usarlo.

Como se ha respondido en https://stackoverflow.com/a/32603798 ahora hay android.testInstrumentationRunnerArguments.class

  • La prueba de instrumentación de Android no encuentra clases del proyecto de biblioteca
  • Robolectric: cómo probar una SherlockActivity
  • Algo falta en mi proyecto de prueba de Android?
  • ¿Cómo probar una Actividad específica con Espresso?
  • Android Espresso no espera que la interfaz de usuario finalice
  • Cómo rellenar la contraseña EditText con Android uiautomator?
  • ¿Cómo probar una ListActivity burlándose de su contentProvider y así aislar la prueba de la base de datos?
  • Android Sharding de prueba
  • "Los animadores sólo se pueden ejecutar en subprocesos Looper" durante las pruebas de instrumentación en dispositivo
  • Almacenamiento de archivos de prueba en el proyecto de prueba
  • Las pruebas de Android no se ejecutan en un dispositivo inferior a 5 (API 21) NoClassDefFoundError
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.