Вы можете попробовать создать собственный сопоставитель для итерации RecyclerView
элементов:
public static Matcher<View> hasItem(Matcher<View> matcher) {
return new BoundedMatcher<View, RecyclerView>(RecyclerView.class) {
@Override public void describeTo(Description description) {
description.appendText("has item: ");
matcher.describeTo(description);
}
@Override protected boolean matchesSafely(RecyclerView view) {
RecyclerView.Adapter adapter = view.getAdapter();
for (int position = 0; position < adapter.getItemCount(); position++) {
int type = adapter.getItemViewType(position);
RecyclerView.ViewHolder holder = adapter.createViewHolder(view, type);
adapter.onBindViewHolder(holder, position);
if (matcher.matches(holder.itemView)) {
return true;
}
}
return false;
}
};
}
И если вы хотите проверить, нет ли строки с конкретным текстом, вы можете сделать:
onView(withId(R.id.rv_list)).check(matches(not(hasItem(hasDescendant(withText("Product"))))));