Có khả năng nào trong số espresso
để kiểm tra tất cả các chế độ xem trong listview
, không phải để có được một cái từ điều này, nhưng để kiểm tra tất cả cho một số điều kiện.Espresso kiểm tra tất cả trong danh sách
Dường như onData()
phục vụ để trả về tương tác chỉ với một mục danh sách từ danh sách. Và nó không phải là vấn đề của tôi.
Chỉnh sửa: Thực ra tôi đã tìm thấy một giải pháp, giải quyết được vấn đề của tôi, nhưng thay vào đó nó trông giống như thay vì tốt. Tôi bắt đầu hành động StealCount để nhận các vật phẩm đếm từ ListView
cuz chúng tôi không thể làm điều đó từ eo biển thử nghiệm (cuz chúng tôi đang ở bên trong Inst thread). Sau đó, tôi bắt đầu kiểm tra dữ liệu cho bất kỳ mục nào từ chế độ xem danh sách bằng cách sử dụng DataInteraction
. Có vẻ như sau:
public static void assertAllItems(
final Matcher<View> adapterViewMatcher,
final Matcher<View> itemsMatcher
) {
StealCountAction stealCountAction = new StealCountAction();
onView(adapterViewMatcher).perform(stealCountAction);
DataInteraction dataInteraction = onData(anything())
.inAdapterView(adapterViewMatcher);
for (int i = 0 ; i < stealCountAction.count; i++) {
dataInteraction.atPosition(0)
.onChildView(itemsMatcher)
.check(ViewAssertions.matches(isDisplayed()));
}
}
static class StealCountAction implements ViewAction {
public int count;
@Override
public Matcher<View> getConstraints() {
return instanceOf(AdapterView.class);
}
@Override
public String getDescription() {
return "Steal count action";
}
@Override
public void perform(UiController uiController, View view) {
count = ((AdapterView) view).getCount();
}
}
Nhưng dù sao có vẻ xấu xí đối với tôi. Có khả năng nào khác không?
Trong trường hợp này tôi giả sử bạn không chờ đợi bất kỳ tài nguyên không tải đang ở trạng thái chạy không tải, chỉ cần nhận các mục đếm từ chủ đề thử nghiệm – busylee
Vâng, tôi không nghĩ về điều này. Vì vậy, bạn có nghĩa là bằng cách nhận được count/numItems từ một ViewAction espresso sẽ chạy các lệnh kiểm tra của bạn vào thời điểm thích hợp và theo cách này nó sẽ không? Đó là một điểm tốt, tôi phải kiểm tra điều này. – jeprubio
Vâng, tôi cho rằng nếu bạn chỉ nhận được Activitity từ quy tắc và nhận được các mục thẳng từ danh sách, nó sẽ được thực hiện không phải bên trong chủ đề chính của ứng dụng của bạn, vì vậy nó có thể dẫn đến một số hành vi sai trái trong các bài kiểm tra. – busylee