2

Google の Espressoを使用してこれを実装しようとしていますが、何も見つからないViewAssertionViewAction、これを実行できるようになります。

これらがバンドルされたマッチャーを使用して実行できるかどうか、または独自に作成する必要があるかどうかはわかりません。

ありがとう!

4

3 に答える 3

6

@denys の回答は一見正しいように見えますが、特定のケースでのみ機能するように見えます ( Espresso の作成者が示唆しているように)。特定のアイテムにスクロールする適切な方法は、android-test-kit-discussフォーラムで回答されたとおりであり、以下に再現されています。

onData(instanceOf(Item.class))
            .inAdapterView(allOf(withId(android.R.id.list), isDisplayed()))
            .atPosition(9)
            .check(matches(isDisplayed()));
于 2014-03-07T19:10:27.310 に答える
1

次のようになります。

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())
于 2015-03-15T18:21:07.877 に答える
0

この特定の番号がすでにある場合は、次のようにします。

onData(is(instanceOf(yourClass.class)))
    .inAdapterView(withId(R.id.some_list_view))
    .atPosition(spicificNumber)
    .perform(scrollTo());

ListView が特定の番号の位置にアイテムを持っていない場合、これは失敗します。

編集:

こちらの例もご覧ください - Espresso samples。リストに特定の番号の後にアイテムがないかどうかを確認するのに役立ちます。

于 2014-02-07T10:30:52.580 に答える