2016-01-06 25 views
7

Listede Kaydet € XX gösterimini kontrol etmek istiyorum. Kaydet € XX, VISIBLE veya INVISIBLE olabilir bir TextView olduğunu. JUnit 4 ve Espresso 2.2.1 kullanıyorum. Espresso - TextView ListView'da mevcut olup olmadığını kontrol edin

böyle kontrol etmeye çalıştı:

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

ama her zaman bir hata alıyorum:

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

TextView'un Espresso ile ListView varsa bir yolu var mı?

GÜNCELLEME

Ben de onData kullanmaya çalıştı:

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

ama veri katmanı ancak görünüm katmanıyla bu onData eser görünüyor. Bu nedenle, hata alırsınız: Birkaç denemeden sonra

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

enter image description here

cevap

14

, ben yolunu buldum.

Bu durumda, birleşik bir yaklaşım kullanmalı ve hem veri hem de görünüm katmanlarıyla çalışmalıyız. ListView'a ID numaralı telefondan erişir ve ilk öğeyi seçeriz. Ardından, 'Kaydet' metnine bakın.

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

Bir çekicilik gibi çalışır. Keyfini çıkarın!

İlgili konular