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 …

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 …

¿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!

  • Robotium - Cómo establecer una fecha en el selector de fecha con Robotium
  • Pruebas con SugarORM y Robolectric
  • Robolectric 2.1 y Eclipse
  • Obtención de logcat desde el dispositivo Android de un probador
  • Probando que una actividad llamada setResult
  • Prueba de componente en Android App SDLC?
  • Automatización de pruebas de iPhone - herramientas de referencia?
  • ¿Puedo eliminar la aplicación publicada en las pruebas alfa de google play?
  • Manifiesto y problemas de configuración para conseguir que Robolectric trabaje con Android Studio 1.1.0
  • ¿Cómo probar características de hardware específicas con Robolectric en android?
  • Error en la construcción de la suite de pruebas - (android.test.suitebuilder.TestSuiteBuilder $ FailedToCreateTests). ¿Cómo resolver?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.