Espresso – verificar qué actividad se abre con la intención de pulsar el botón?
¿Es posible rastrear qué Actividad se abre después de pulsar un determinado botón?
Tengo una prueba en la que, cuando se hace clic en un botón , se envía una solicitud al servidor . Hasta que se envía la solicitud, se abre una Actividad . Para verificar la ejecución exitosa de la prueba, necesito comprobar cuál es la Actividad abierta.
Ejemplo de mi prueba:
- Android Espresso: longClick () no funciona y se comporta como click ()
- ¿Hay alguna manera de probar las pestañas personalizadas de Chrome con Espresso?
- Crear DummyActivity dentro de la carpeta androidTest para probar
- Google Espresso java.lang.RuntimeException: No se pudo iniciar intención Intent {act = android.intent.action.MAIN
- Haciendo clic en un elemento de menú en la barra de acción con Espresso al usar onView (withId (...))
Compruebe qué intención se abre en Espresso —
private void startTest() { recreateAuthData(InstrumentationRegistry.getTargetContext(), "d78269d9-9e00-4b8d-9242-815204b0a2f6", "3f32da21-914d-4adc-b6a1-891b842a2972"); InstrumentationRegistry.getTargetContext().getSharedPreferences(ActivitySplashScreen.class.getSimpleName(), Context.MODE_PRIVATE).edit().putInt(ActivitySplashScreen.PROPERTY_APP_VERSION, ActivitySplashScreen.getAppVersion(InstrumentationRegistry.getTargetContext())).commit(); InstrumentationRegistry.getTargetContext().getSharedPreferences(ActivitySplashScreen.class.getSimpleName(), Context.MODE_PRIVATE).edit().putString(ActivitySplashScreen.PROPERTY_REG_ID, "testKey").commit(); mActivityRule.launchActivity(setIntent()); // inputPinCode("2794"); } @Test public void testIdent() { startTest(); onView(withText("ПРО")).perform(click()); putDelay(500); onView(withId(R.id.get_pro)).perform(click()); onView(withText("Авторизация по паспортным данным")).perform(click()); putDelay(500); closeSoftKeyboard(); onView(withId(R.id.btn_goto_passport)).perform(click()); onView(withHint("Серия и номер паспорта")).perform(replaceText("9894657891")); onView(withHint("Дата выдачи паспорта")).perform(replaceText("17032014")); onView(withHint("Дата рождения")).perform(replaceText("31091994")); onView(withHint("СНИЛС")).perform(replaceText("54665285919")); putDelay(500); Log.d("TestWidget", hasComponent(hasShortClassName("ActivityMain")).toString()); onView(withId(R.id.btn_next)).perform(click()); // some code which check which activity is display now putDelay(500); }
- ¿Cómo obtener una lista de elementos en espresso?
- GetActivity () causa RuntimeException: No se pudo iniciar intención Intent act = android.intent.action.MAIN
- Compruebe el texto en la posición en el reciclador
- ¿Cómo usar Espresso UI Testing for React Native?
- La prueba de unidad que incluye un Toast en el código de producción falla
- Prueba de interfaz de usuario de Espresso para Android: falla en la ejecución de la prueba: Error en la ejecución de la instrumentación debido a 'java.lang.IllegalAccessError'
- Lanzamiento de pruebas Espresso en varios emuladores
- Prueba de ViewPager con múltiples fragmentos usando espresso android
¿Es posible rastrear qué Actividad se abrió después de presionar el botón?
Compruebe la biblioteca espresso-intents
:
Configuración
Agrega a tu app/build.gradle
estas líneas:
androidTestCompile 'com.android.support.test:runner:0.5' androidTestCompile 'com.android.support.test:rules:0.5' androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.2'
AVISO:
espresso-intents
no se ejecutarán sin libsespresso-core
,runner
orules
.
También puede ser necesario cambiar ActivityTestRule<>
a IntentsTestRule
como se describe aquí:
IntentsTestRule
Utilice IntentsTestRule en lugar de ActivityTestRule cuando se utilizan Espresso-Intents. IntentsTestRule facilita el uso de las API de Espresso-Intents en las pruebas de interfaz de usuario funcionales. Esta clase es una extensión de ActivityTestRule, que inicializa Espresso-Intents antes de cada prueba anotada con @Test y libera Espresso-Intents después de cada prueba. La actividad se terminará después de cada prueba y esta regla se puede utilizar de la misma manera que ActivityTestRule.
De: https://google.github.io/android-testing-support-library/docs/espresso/intents/
Ejemplo de código (haga clic en el botón para iniciar una nueva actividad)
Esta es una solución que utiliza espresso-intents
de espresso-intents
para problemas similares:
Un ejemplo de prueba con intento stubbing:
@Test public void testActivityResultIsHandledProperly() { // Build a result to return when a particular activity is launched. Intent resultData = new Intent(); String phoneNumber = "123-345-6789"; resultData.putExtra("phone", phoneNumber); ActivityResult result = new ActivityResult(Activity.RESULT_OK, resultData); // Set up result stubbing when an intent sent to "contacts" is seen. intending(toPackage("com.android.contacts")).respondWith(result)); // User action that results in "contacts" activity being launched. // Launching activity expects phoneNumber to be returned and displays it on the screen. user.clickOnView(system.getView(R.id.pickButton)); // Assert that data we set up above is shown. assertTrue(user.waitForText(phoneNumber)); }
De: https://developer.android.com/reference/android/support/test/espresso/intent/Intents.html
Recursos adicionales:
-
[Desarrolladores de Android] Espresso Intents Reference
-
[Github || Google Samples] Ejemplo básico para Espresso Intents
-
[Github] Android Espresso Intent Sample
-
Prueba de Android Intents utilizando Espresso
-
[Gist] Ejemplo de cómo usar espresso-intenciones en las pruebas de Android – código fuente para el enlace anterior
Para que coincida realmente con una actividad iniciada con intentos de espresso, debe comprobar el componente de la nueva intención:
intended(hasComponent(NewActivity.class.getName()));
Asegúrese de llamar Intents.init()
en la configuración y Intents.release()
en teardown para poder grabar intents con espresso.
Puede comprobar esto – Espresso Intents
Es una extensión de Espresso para validar intenciones.