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.
- Android Espresso typeText en EditText en ActionBar
- Cómo hacer clic en el índice en el menú de opciones con Espresso Android
- 'Android.support.test.espresso no existe' cuando quiero usarlo para una prueba individual de apk
- Espresso NoMatchingViewException cuando se utiliza matricador withId
- NPE @ android.support.v7.widget.RecyclerView $ LayoutManager.detachViewInternal
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.
- Ejecutar espresso después de proteger la aplicación pero no probar
- Prueba de intención Espresso fallando
- Ejecución de pruebas específicas utilizando Espresso y Spoon
- NullPointer Excepción al usar Espresso
- ¿Cómo desplazarse por la pantalla en la prueba de espresso android? Necesito validar el texto presente en la pantalla
- Android - ¿Cómo hacer clic en un elemento de un cajón de navegación con Espresso?
- El recurso de ralentí Espresso no funciona
- Espresso - Aserción de un TextView con datos cargados asíncronos
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.
- Gradle release build con proguard: java.lang.IncompatibleClassChangeError y java.lang.NoSuchMethodError
- Pantalla Android Parpadea en mostrar / ocultar barras del sistema