私はListFragmentでアクティビティを持っています。 シナリオを実装する必要があります(エスプレッソの助けを借りて):データアイテムがEspressoのListFragmentにないことをアサートする方法は?
- 新しいアイテムをListFragmentに追加してください。
- 表示されていることを確認してください。
- このアイテムを削除してください。
- 表示されていないことを確認してください。
私は4番目の問題点があります。 私は記事[https://google.github.io/android-testing-support-library/docs/espresso/advanced/#asserting-that-a-view-is-not-present][1]を読んだ。
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")))));
問題は、私の場合、私はAdapterViewを持っていないということです
著者はマッチャーを実装するためにrecomends。 ListFragmentのidをwithId()関数で渡します。したがって、マッチャーは動作しません。 問題は、withAdaptedDataのコードをListFragmentで動作するように変更する方法です。それとも、私の仕事を解決する別の方法がありますか?