2016-02-03 2 views
6

Как говорится в названии, это терпит неудачу несколько раз, некоторые другие - успех.Закусочная и эспрессо иногда сбой

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}" 

Первая строка трассировки стека предполагает, что эспрессо не может видеть закусочную на экране. Но во второй строке говорится, что на самом деле есть закусочная с visibility=VISIBLE и text=Network Error, что верно.

Я смущен, что происходит?

Это мой тестовый код:

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

PS: это в основном терпит неудачу, когда я запускаю весь тестовый набор; но иногда это также терпит неудачу, когда я просто запускаю этот тест самостоятельно. Некоторые другие времена он проходит зеленый, но нет никакой картины, кажется случайным.

ответ

4

Поздний! Но я надеюсь, что это полезно для других:

Testing Snackbar show with Espresso

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

СПАСИБО! Я так рад, что есть решение для этого, которое не требует отказа от тестов пользовательского интерфейса. – AdamMc331

+0

На самом деле я тоже попробовал это, и у меня такая же проблема. :( – AdamMc331

1

я получал подобный вопрос. Я был в состоянии решить ее:

  1. Disabeling анимации, как описано here.

  2. Я показывал SnackBar после того, как я извлек данные с сервера, поэтому мне также пришлось ждать, пока данные не будут получены. Мне удалось решить это с помощью IdlingResource, как описано в this anwser.

Тогда я смог успешно проверить SnackBar.

Надеюсь, мои очки помогут.

Смежные вопросы