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)
- Google Espresso o Robotium
- Prueba de integración de Android: Robotium o UIAutomator?
- Prueba de prueba de Android recurso
- Cómo correctamente mock HttpGet llamada en la prueba de Android
- ¿Robotium es confiable para probar cuán rápido comienzan las actividades y fragmentos?
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.
- No es posible hacer clic en barra de acción en robotium
- Robotium - Escoja una cuenta en AccoutPicker con solo
- Crear prueba Android apk utilizando el sistema de compilación gradle
- ¿Cómo resolver la excepción durante la construcción de la suite?
- ¿Cómo ejecutar Android / Robotium Instrumentation casos de prueba contra una versión de lanzamiento APK?
- La prueba de instrumentación falla al azar con multidexado activado
- Android Robotium NoClassDefFoundError
- Cómo conseguir que la actividad se ejecute desde otro proceso utilizando Robotium
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