Android: Espresso no espera hasta que se muestre fragmento o actividad para que cada prueba fallara
Sé que hay un montón de preguntas alrededor de esto pero no puedo encontrar nada que me ayude 🙁
Intenté usar Espresso para generar la prueba de interfaz de usuario para una aplicación de Android. Después de superar problemas de dependencia (porque algunas bibliotecas se incluyen dos veces en diferentes versiones como dependencia de otras bibliotecas) todavía no puedo crear pruebas de trabajo …
- Desarrollo impulsado por pruebas para Android
- ¿Por qué no puedo iniciar sesión para probar las cuentas de usuario de Facebook desde la aplicación nativa de Android?
- Android herramientas de automatización de pruebas
- Pruebas de servicio de Android
- Las pruebas existentes de la interfaz de usuario de Android dejaron de funcionar después de cambiar a AndroidJUnitRunner
Sé acerca de IdlingResource pero como he leído, espresso espera fuera de la caja hasta que el hilo principal y AsyncTaskPool está inactivo antes de ejecutar cualquier prueba.
Para ponerse en contacto con él creé una aplicación sencilla que contiene dos actividades, una pantalla de inicio y una actividad principal. El splashscreen contiene algo como esto para esperar durante tres segundos antes de iniciar mainActivity
new Handler().postDelayed(new Runnable() { @Override public void run() { finish(); Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class); startActivity(intent); } }, 3000);
También intenté utilizar AsyncTask para esto pero nada parece trabajar correctamente porque cada prueba falla.
La prueba sólo comprueba si un TextView que contiene un texto definido se muestra en la vista mediante:
onView(withText("DummyText")).check(matches(notNullValue()));
Pensé que no sería tan difícil de crear una prueba simple …
Porque tengo que probar contra api> = 16 necesito espresso. Sólo para mí lo compruebo utilizando uiAutomator (sé que es para api> = 18), pero hay esa lógica inteligente para esperar a que algo se muestre ….. y que funciona perfectamente …
- Comprobación de que una actividad devuelve el resultado esperado
- NPE cuando getSystemService se llama en una instancia de servicio por Robolectric
- Cualquier forma de obtener una referencia para los elementos de la barra de Acción para Junit pruebas en android?
- Ejemplos de Robotium
- Android: Se ha producido un error en la ejecución de la prueba: La ejecución de la instrumentación ha fallado debido a 'java.lang.IncompatibleClassChangeError'
- Cómo ingresar valores numéricos a Android Numpad usando Appium?
- ¿Es útil "Monkey Runner" para que los probadores preparen casos de prueba directamente en aplicaciones Android?
- Espresso lanza error al hacer clic en la vista de pantalla completa con Samsuns Galaxy S3
¿Cuál es tu regla de actividad? Porque si es SplashScreenActivity, la prueba comenzará inmediatamente y el onView fallará si la vista no está en la pantalla de bienvenida. Intente abrir directamente MainActivity, para probar esa vista. Estoy usando Espresso durante algún tiempo y sé que los métodos @Test comienzan cuando la actividad definida como ActivityTestRule ha terminado de cargar.
Espero que esto ayudó.
¡Buena suerte!
- Java.lang.IllegalStateException: Objeto ya no es administrado por Realm. ¿Se ha eliminado?
- Android y OOP – Variables globales vs heredados Getters en fragmentos