Ejecute la prueba Junit utilizando la instrumentación de android en un paquete con clases en orden específico

Estoy intentando funcionar la prueba de Junit de la instrumentación del androide usando línea de comando. Estoy usando el comando siguiente y está lanzando la derecha de la prueba.

adb shell am instrument -w com.android.foo/android.test.InstrumentationTestRunner 

Mi paquete de proyecto de Android tiene siguientes archivos de código fuente de java (en orden alfabético)

Com.android.foo

Actividad

ContactosTest

Prueba de inicio

SendTest

Cuando ejecuto la prueba utilizando el comando mencionado anteriormente, la prueba comienza a ejecutar ActivityTest primero y así sucesivamente. Esto no es lo que quiero, quiero ejecutar LaunchTest primero seguido por ContactTest, SendTest y ActivityTest. Intenté usar

 adb shell am instrument -w -e class com.android.foo.LaunchTest,com.android.foo.ContactTest com.android.foo/android.test.InstrumentationTestRunner 

Pero me da un error puede ser porque no estoy usando TestCase clase en mi código, pero en lugar de mi LaunchTest y otros se extiende ActivityInstrumentationTestCase2.

Cualquier ayuda es apreciada.

Finalmente lo conseguí para trabajar usando el comando siguiente:

 adb shell am instrument -e class com.android.foo.LaunchTest -w com.android.foo/android.test.InstrumentationTestRunner 

Si el orden en el que se ejecutan las pruebas, sus pruebas son frágiles y deben ser refactorizadas. Significa que dependen unos de otros e idealmente, las pruebas son independientes. Por lo general, la mayoría de las pruebas son tan independientes y de grano fino que las llamamos pruebas unitarias.

Un comienzo común para romper este tipo de dependencia es utilizar los métodos setup() y teardown() en su TestCase. Aquí puede preparar sus pruebas para ejecutar y limpiar cualquier cambio que sus pruebas puedan hacer.


Dicho esto, el android.test.InstrumentationTestRunner no tiene una opción para volver a ordenar sus suites de prueba. Sin embargo, esto puede hacerse de dos maneras.

1) puedes crear tu propia implementación de android.test.InstrumentationTestRunner que hace algún pedido especial. Esto le dará la mayor flexibilidad pero puede tomar más tiempo.

2) El am instrument puede tomar el nombre de la clase como un argumento para que pueda ejecutar sus pruebas en orden pero ejecutando varios comandos (posiblemente combinados en un script bash). Esto se hace añadiendo los argumentos "-e class [classname of test]".


Además, hay un error en la forma en que está ejecutando las pruebas:

 adb shell am instrument -w -e class com.android.foo.LaunchTest,com.android.foo.ContactTest com.android.foo/android.test.InstrumentationTestRunner 

Intenta ejecutar para dos clases. Para hacer esto debes cambiarlo a esto:

 adb shell am instrument -w -e class com.android.foo.LaunchTest com.android.foo/android.test.InstrumentationTestRunner adb shell am instrument -w -e class com.android.foo.ContactTest com.android.foo/android.test.InstrumentationTestRunner 
  • ¿Conoces alguna herramienta de instrumentación dinámica para Android con soporte para múltiples dispositivos (idealmente en Python o Jython)?
  • Android: Robotium vs marco de prueba de Android
  • Prueba de interfaz de usuario de Robotium para la aplicación con el cajón de navegación
  • Manera correcta de abrir NavigationDrawer y seleccionar elementos en Robotium
  • "La prueba no se ejecutó hasta la finalización." Motivo: 'La instrumentación ejecutada falló debido a' El proceso se estrelló. '' Mientras se ejecutan varios testcases
  • ¿Cómo puedo ejecutar una sola prueba con gradle android
  • Prueba de Android usando logcat para la captura de eventos
  • Robotium: ¿Cómo espero que termine la carga antes de continuar?
  • No se pudo iniciar intención Intent en un plazo de 45 segundos - robotium
  • Instalación de un apk de Android mediante programación como parte de un marco de prueba
  • Cómo probar automáticamente onResume el comportamiento llamando onDestroy usando Robotium?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.