2016-02-03 14 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}" 

スタックトレースの最初の行は、エスプレッソが画面上のスナックバーを見ることができないことを示唆しています。しかし、2行目は実際にvisibility=VISIBLEtext=Network ErrorのSnackbarが正しいことを示しています。

私は混乱しています、何が起こっていますか?

これは私のテストコードです:

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

ありがとうございます!私はUIテストをあきらめる必要のない、これに対する解決策があることをうれしく思っています。 – AdamMc331

+0

実際に私もこれを試しましたが、同じ問題があります。 :( – AdamMc331

1

私は同様の問題を得ていました。 hereを説明するように

  1. Disabelingアニメーション:私はでそれを解決することができました。

  2. 私はサーバーからデータを取得した後にSnackBarを表示していたので、データが取得されるまで待たなければなりませんでした。私はで解決することができました。これはthis anwserに記載されています。

その後、SnackBarを正常に確認できました。

私のポイントが役立つことを願っています。

関連する問題