android integration-testing android-testing android-espresso android-snackbar

android - Prueba de Snackbar show con Espresso



integration-testing android-testing (3)

¿Hay alguna forma de probar con Espresso que la barra de refrigerios se muestre con el texto correcto?

Tengo una simple llamada para crear un snackbar.

Snackbar.make(mView, "My text", Snackbar.LENGTH_LONG).show();

He intentado esto sin suerte

onView(withText("My text")).inRoot(withDecorView(not(is(mActivityRule.getActivity().getWindow().getDecorView())))).check(matches(isDisplayed()));


Esto funcionó para mí, por favor intente

onView(allOf(withId(android.support.design.R.id.snackbar_text), withText("My text"))) .check(matches(isDisplayed()));

Si usa AndroidX, use lo siguiente:

onView(withId(com.google.android.material.R.id.snackbar_text)) .check(matches(withText(R.string.whatever_is_your_text)))


Una alternativa

private void checkSnackBarDisplayedByMessage( @StringRes int message) { onView(withText(message)) .check(matches(withEffectiveVisibility( ViewMatchers.Visibility.VISIBLE ))); }


Vi las respuestas anteriores pero pensé que esto sería mejor.

@Test public void onFabClick_shouldDisplaySnackbar() throws Exception { onView(withId(R.id.fab)).perform(click()); // Compare with the text message of snackbar onView(withText(R.string.snackbar_message)) .check(matches(isDisplayed())); }