1
我有一個ListFragment的活動。 我需要實施的場景(在Espresso的幫助下):如何斷言數據項不在帶Espresso的ListFragment中?
- 在ListFragment中添加新項目。
- 檢查它顯示。
- 刪除該項目。
- 檢查它沒有顯示。
我有第四點的問題。 我已閱讀文章[https://google.github.io/android-testing-support-library/docs/espresso/advanced/#asserting-that-a-view-is-not-present][1]。
作者recomends實現匹配:
private static Matcher<View> withAdaptedData(final Matcher<Object> dataMatcher) {
return new TypeSafeMatcher<View>() {
@Override
public void describeTo(Description description) {
description.appendText("with class name: ");
dataMatcher.describeTo(description);
}
@Override
public boolean matchesSafely(View view) {
if (!(view instanceof AdapterView)) {
return false;
}
@SuppressWarnings("rawtypes")
Adapter adapter = ((AdapterView) view).getAdapter();
for (int i = 0; i < adapter.getCount(); i++) {
if (dataMatcher.matches(adapter.getItem(i))) {
return true;
}
}
return false;
}
};
}
,然後調用:
onView(withId(R.id.list))
.check(matches(not(withAdaptedData(withItemContent("item: 168")))));
的問題是,在我的情況我沒有適配器視圖。我在函數中使用Id()傳遞ListFragment的id。所以匹配器不起作用。 問題是如何將withAdaptedData的代碼更改爲與ListFragment一起使用?或者,也許有,還有另一種方法來解決我的任務?