20

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

ich einen einfachen Anruf haben eine Snackbar zu erstellen

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

ich ohne dieses Glück versucht haben

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

Antwort

36

Das ist für mich gearbeitet, bitte versuchen Sie es.

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

Dies bietet keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag. – Sufian

+0

Funktioniert die neue Formulierung? – ksarmalkar

+0

Ja, das hat funktioniert! Danke @ksarmalkar – SleepingLlama

6

Eine Alternative

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

sah ich die vorherigen Antworten, 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())); 
}