2016-02-03 11 views
6

Jak sama nazwa wskazuje, czasami się nie udaje, a inne to sukces.Awaria paska i espresso czasami

android.support.test.espresso.base.DefaultFailureHandler$AssertionFailedWithCauseError: 'is displayed on the screen to the user' doesn't match the selected view. 

Expected: is displayed on the screen to the user 
Got: "AppCompatTextView{id=2131492981, res-name=snackbar_text, visibility=VISIBLE, width=444, height=71, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=18.0, y=0.0, text=Network Error, input-type=0, ime-target=false, has-links=false}" 

Pierwsza linia śledzenia stosu sugeruje, że espresso nie jest w stanie zobaczyć paska Snackbar na ekranie. Ale druga linia mówi, że faktycznie widzi Snackbar z visibility=VISIBLE i text=Network Error, który jest poprawny.

Jestem zdezorientowany, co się dzieje?

To jest mój kodu testu:

activityRule.launchActivity(new Intent()); 
onView(withText("Network Error")).check(matches(isDisplayed())); 

PS: to głównie nie po uruchomieniu cały garnitur testowy; ale czasami to również kończy się niepowodzeniem, gdy po prostu wykonuję ten test sam. Czasami mija zielony, ale nie ma żadnego wzoru, wydaje się losowy.

Odpowiedz

4

Późno! Ale mam nadzieję, że jest to pomocne dla innych:

Testing Snackbar show with Espresso

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

DZIĘKUJEMY! Cieszę się, że istnieje rozwiązanie, które nie wymaga rezygnacji z testów interfejsu użytkownika. – AdamMc331

+0

Właściwie to też próbowałem, i mam ten sam problem. :( – AdamMc331

1

I był już podobny problem. Udało mi się go rozwiązać przez:

  1. Disabeling animacji jak opisano here.

  2. Wyświetlałem SnackBar po pobraniu danych z serwera, więc musiałem również poczekać, aż dane zostaną pobrane. Udało mi się go rozwiązać za pomocą IdlingResource, jak opisano w this anwser.

Następnie udało mi się z powodzeniem sprawdzić SnackBar.

Mam nadzieję, że moje punkty pomogą.