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()));
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)))
Eine Alternative
private void checkSnackBarDisplayedByMessage(
@StringRes int message) {
onView(withText(message))
.check(matches(withEffectiveVisibility(
ViewMatchers.Visibility.VISIBLE
)));
}
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()));
}