2016-02-03 20 views
6

Như tiêu đề cho biết, nó không thành công một số lần, một số người khác thành công.Snackbar và Espresso thất bại đôi khi

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

Dòng đầu tiên của dấu vết ngăn xếp được đề xuất là không thể thấy Snackbar trên màn hình. Nhưng dòng thứ hai nói rằng thực tế là nhìn thấy một Snackbar với visibility=VISIBLEtext=Network Error là chính xác.

Tôi đang bối rối, chuyện gì đang xảy ra?

Đây là mã thử nghiệm của tôi:

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

PS: nó chủ yếu là thất bại khi tôi chạy phù hợp với kiểm tra tổng thể; nhưng đôi khi nó cũng thất bại khi tôi chỉ chạy thử nghiệm này một mình. Một số lần khác nó chuyển sang màu xanh lá cây, nhưng không có mẫu nào, có vẻ ngẫu nhiên.

Trả lời

4

Muộn! Nhưng tôi hy vọng rằng nó rất có ích cho người khác:

Testing Snackbar show with Espresso

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

CẢM ƠN BẠN! Tôi rất vui vì có một giải pháp cho điều này mà không cần phải từ bỏ các bài kiểm tra UI. – AdamMc331

+0

Thực ra tôi cũng đã thử điều này và tôi cũng gặp vấn đề tương tự. :( – AdamMc331

1

tôi đã nhận được vấn đề tương tự. Tôi đã có thể giải quyết nó bằng cách:

  1. Hình ảnh động gắn nhãn như mô tả here.

  2. Tôi đã hiển thị SnackBar sau khi tôi tìm nạp dữ liệu từ máy chủ vì vậy tôi cũng phải đợi cho đến khi dữ liệu được tìm nạp. Tôi đã giải quyết nó với IdlingResource như được mô tả trong this anwser.

Sau đó, tôi có thể kiểm tra thành công SnackBar.

Tôi hy vọng điểm của mình sẽ hữu ích.

Các vấn đề liên quan