2016-01-06 1 views
7

の表示を確認したいです。リストにXX30を保存してください。 保存するXXは、VISIBLEまたはINVISIBLEのTextViewです。私はJUnit 4とEspresso 2.2.1を使用します。Espresso - ListViewにTextViewが存在するかどうか確認してください

私はこのようにそれをチェックしてみました:

onView(withText(startsWith("Save"))).check(matches(isDisplayed())); 

が、常にエラーを取得:

android.support.test.espresso.AmbiguousViewMatcherException: 'with text: a string starting with "Save"' matches multiple views in the hierarchy. 

するTextViewには、エスプレッソとリストビューに存在する場合に方法はありますか?

UPDATE

私もonDataを使用しようとしました:

onData(hasToString(startsWith("Save"))) 
       .inAdapterView(withId(R.id.suggestion_list_view)).atPosition(0) 
       .check(matches(isDisplayed())); 

が、それは、データ層ではなく、ビュー層とそのonData作品です。したがって、私は、エラーメッセージが表示されます。いくつかの試行後

java.lang.RuntimeException: No data found matching: with toString() a string starting with "Save" contained values: <[Data: ...]> 

enter image description here

答えて

14

、私は方法を見つけました。

この場合、データとビューの両方のレイヤーを併用するアプローチを組み合わせる必要があります。 ListViewIDでアクセスし、最初の項目を選択します。次に、「保存」のテキストを確認します。

onData(anything()) 
       .inAdapterView(withId(R.id.list_view)) 
       .atPosition(0) 
       .onChildView(withId(R.id.suggestion_saving)) 
       .check(matches(withText(startsWith("Save")))); 

魅力的に機能します。楽しい!

関連する問題