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.

  • Android Studio no puede resolver Espresso 3.0.0
  • Cómo hacer clic en un elemento dentro de un RecyclerView en Espresso
  • Android Espresso: longClick () no funciona y se comporta como click ()
  • ¿Cómo comprobar el título de la barra de herramientas en la prueba instrumental android?
  • Espresso Recylerview en ViewPager compara varias vistas
  • Gradle JUnit Espresso en el emulador connectedAndroidTest java.lang.IncompatibleClassChangeError
  • Valor de archivo de cadena de lectura Espresso
  • Espresso y recogedor de cuenta Android
  • La ejecución de instrumentación falló debido a 'android.content.res.Resources $ NotFoundException'
  • Prueba de múltiples actividades con espresso
  • Android Espresso NoMatchingViewException en el cheque
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.