Test Snackbar show avec Espresso

Existe-t-il un moyen de tester en utilisant Espresso que le snackbar apparaît avec le bon texte?

J'ai un simple appel pour créer un snackbar

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

J'ai essayé cela sans chance

onView(withText("My text")).inRoot(withDecorView(not(is(mActivityRule.getActivity().getWindow().getDecorView())))).check(matches(isDisplayed()));
24
demandé sur SleepingLlama 2015-10-13 23:19:25

3 réponses

Cela a fonctionné pour moi, veuillez essayer.

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

Si vous utilisez AndroidX, veuillez utiliser ce qui suit:

onView(withId(com.google.android.material.R.id.snackbar_text))
        .check(matches(withText(R.string.whatever_is_your_text)))
47
répondu ksarmalkar 2018-06-11 23:01:49

Une alternative

private void checkSnackBarDisplayedByMessage(
        @StringRes int message) {
    onView(withText(message))
            .check(matches(withEffectiveVisibility(
                    ViewMatchers.Visibility.VISIBLE
            )));
}
9
répondu Minuel 2016-10-07 11:08:33

J'ai vu les réponses précédentes mais je pensais que ce serait mieux.

@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()));
}
0
répondu Rizwan 2018-02-01 18:28:08