Tôi đang cố gắng để cập nhật một EditText
như là một phần của một thử nghiệm Espresso với:Đang cập nhật một EditText với Espresso
onView(allOf(withClassName(endsWith("EditText")), withText(is("Test")))).perform(clearText())
.perform(click())
.perform(typeText("Another test"));
Tuy nhiên tôi nhận được lỗi sau:
com.google.android.apps.common.testing.ui.espresso.NoMatchingViewException: No views in hierarchy found matching: (with class name: a string ending with "EditText" and with text: is "Test")
Bằng cách phá vỡ sự kiểm tra Tôi có thể thấy rằng điều này xảy ra sau khi thực hiện clearText()
, vì vậy tôi giả định rằng các đối sánh đang được chạy lại trước mỗi perform
và không thực hiện trước hành động thứ hai. Mặc dù điều này có ý nghĩa, nó khiến tôi hơi bối rối về cách cập nhật EditText
bằng cách sử dụng Espresso. Làm thế nào tôi nên làm điều này?
Lưu ý rằng tôi không thể sử dụng ID tài nguyên hoặc tương tự trong trường hợp này và phải sử dụng kết hợp như được hiển thị ở trên để xác định chế độ xem chính xác.
Cảm ơn đã phản ứng. Rất tiếc, có nhiều EditTexts trong hoạt động, được tạo theo chương trình mà không có ID, do đó, cả hai đề xuất này đều không hoạt động. – jgm
Tôi hiểu. Có lẽ bạn có thể đặt thẻ cho mỗi EditText bạn tạo và tìm chế độ xem dựa trên thẻ đó. Thẻ chỉ có thể được sử dụng để thử nghiệm, nhưng ít nhất nó sẽ cung cấp cho bạn một cái gì đó để phân biệt các trường EditText. Sau đó, một lần nữa, có thể vi phạm các điều kiện bạn đề cập ở phần cuối của câu hỏi của bạn (tôi bỏ qua phần đó trước khi tôi trả lời). – Maxwell