Android Espresso: espera que la actividad termine / empiece

¿Existe una solución canónica usando Espresso para esperar que una Actividad específica termine o comience?

Tengo una SplashActivity que aparece durante unos segundos, luego una MainActivity. Quiero que el Espresso interactúe con MainActivity, no con SplashActivity, pero no puedo encontrar ninguna información acerca de esperar tal condición.

Lo más parecido que puedo encontrar es una mención de recursos ociosos pero no está claro para mí cómo usaría eso aquí para esperar la Actividad.

Supongo que su actividad de salpicadura está realizando alguna inicialización.

Si este es el caso, mi sugerencia es definir algún tipo de patrón de escucha para poder obtener una devolución de llamada cuando se hace la inicialización. A continuación, puede hacer Espresso esperar la inicialización con un IdlingResource.

Nota: El siguiente código NO es completo, pero tiene la intención de darle una pista sobre cómo hacerlo:

public class SplashIdlingResource implements IdlingResource, YourApplicationInitListener { // volatile because can be set by a different // thread than the test runner: the one calling back private volatile boolean mIsInitialized; private ResourceCallback mCallback; public SplashIdlingResource() { YourApplication application = // retrieve your Application object mIsInitialized = application.isInitialized(); if (!mIsInitialized) { application.addInitListener(this); } } @Override public String getName() { return SplashIdlingResource.class.getName(); } @Override public boolean isIdleNow() { return mIsInitialized; } @Override public void registerIdleTransitionCallback(ResourceCallback callback) { mCallback = callback; } @Override public void onApplicationInitCompleted() { m_isInitialized = true; if (m_callback != null) { m_callback.onTransitionToIdle(); } } } 

Donde onApplicationInitCompleted () es la devolución de llamada que definió y que se debe llamar cuando se realiza la actividad Splash y, por lo tanto, la inicialización.

Por último, registre este nuevo IdlingResource con Espresso llamando a Espresso.registerIdlingResource en la configuración de prueba.

  • Actividad de ensayo y fragmento específico con espresso
  • Prueba Espresso para notificación de presentarse
  • Escribe una prueba que haga clic en vistas dentro de PopupWindow
  • Force Espresso para no esperar progreso
  • Ejecutar la prueba de instrumentación usando Espresso: Clase ref en la clase pre-verificada resuelto a la implementación inesperada
  • La prueba Espresso falla con NoActivityResumedException a menudo
  • ¿Cómo volver a ejecutar la prueba fallada en Espresso? - lluvia de ideas
  • Espresso - ¿Cómo puedo comprobar si se inicia una actividad después de realizar una determinada acción?
  • ¿Cómo esbozar imágenes de selección con intenciones Espresso?
  • ¿Es posible utilizar Butterknife para inyectar vistas en las clases de prueba espresso en android?
  • Espresso: cómo desplazarse a la parte inferior de ScrollView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.