wake-up-neo.com

Snackbar-Show mit Espresso testen

Gibt es eine Möglichkeit, mit Espresso zu testen, dass die Snackbar mit dem richtigen Text angezeigt wird?

Ich habe einen einfachen Anruf, um eine Snackbar zu erstellen

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

Ich habe das ohne Glück versucht

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

Das hat für mich funktioniert, bitte versuchen Sie es.

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

Wenn Sie AndroidX verwenden, verwenden Sie bitte Folgendes:

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

Eine Alternative

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

Ich habe die vorherigen Antworten gesehen, aber ich dachte, das wäre besser. 

@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
Rizwan