Google の Espressoを使用してこれを実装しようとしていますが、何も見つからないViewAssertion
かViewAction
、これを実行できるようになります。
これらがバンドルされたマッチャーを使用して実行できるかどうか、または独自に作成する必要があるかどうかはわかりません。
ありがとう!
Google の Espressoを使用してこれを実装しようとしていますが、何も見つからないViewAssertion
かViewAction
、これを実行できるようになります。
これらがバンドルされたマッチャーを使用して実行できるかどうか、または独自に作成する必要があるかどうかはわかりません。
ありがとう!
@denys の回答は一見正しいように見えますが、特定のケースでのみ機能するように見えます ( Espresso の作成者が示唆しているように)。特定のアイテムにスクロールする適切な方法は、android-test-kit-discussフォーラムで回答されたとおりであり、以下に再現されています。
onData(instanceOf(Item.class))
.inAdapterView(allOf(withId(android.R.id.list), isDisplayed()))
.atPosition(9)
.check(matches(isDisplayed()));
次のようになります。
1. listView で要素の数を見つけて、変数に保存します。
final int[] counts = new int[1];
onView(withId(R.id.some_list_view)).check(matches(new TypeSafeMatcher<View>() {
@Override
public boolean matchesSafely(View view) {
ListView listView = (ListView) view;
counts[0] = listView.getCount();
return true;
}
@Override
public void describeTo(Description description) {
}
}));
2. 次に、listView 内の要素の数がわかれば、範囲内の任意の要素にスクロールできます。
onData(anything()).inAdapterView(R.id.some_list_view).getPosition(<item_index>).perform(scrollTo())
この特定の番号がすでにある場合は、次のようにします。
onData(is(instanceOf(yourClass.class)))
.inAdapterView(withId(R.id.some_list_view))
.atPosition(spicificNumber)
.perform(scrollTo());
ListView が特定の番号の位置にアイテムを持っていない場合、これは失敗します。
編集:
こちらの例もご覧ください - Espresso samples。リストに特定の番号の後にアイテムがないかどうかを確認するのに役立ちます。