2016-05-13 12 views
0

Ich teste eine App mit Espresso. Diese App hat 2 ListViews, espresso onData Funktion findet die zwei ListViews, aber sie haben unterschiedliche IDs.espresso onData stimmt mit mehreren Ansichten in der Hierarchie überein?

Code:

onData(withId(R.id.order_jijia_listview)).perform(ViewActions.click()); 

Ergebnis:

ListView{id=2131493579, res-name=order_jijia_listview, visibility=VISIBLE, width=768, 
      height=659, has-focus=false, has-focusable=true, has-window-focus=true, 
      is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, 
      is-layout-requested=false, is-selected=false, root-is-layout-requested=false, 
      has-input-connection=false, x=0.0, y=345.0, child-count=7} ****MATCHES**** 

ListView{id=2131493586, res-name=order_jijia_pop_listview, visibility=VISIBLE, width=0, 
      height=0, has-focus=false, has-focusable=false, has-window-focus=true, 
      is-clickable=true, is-enabled=true, is-focused=false, is-focusable=false, 
      is-layout-requested=true, is-selected=false, root-is-layout-requested=false, 
      has-input-connection=false, x=0.0, y=0.0, child-count=0} 

Antwort

0

Der zweite Listview nicht als ****MATCHES**** markiert, so dass das Problem ist nicht da.

Sie sollten onData nur für ListView-Elemente verwenden, nicht für die ListView selbst. Listview den Sie benötigen onView verwenden:

onView(withId(R.id.order_jijia_listview)).perform(ViewActions.click()); 

Was wollen Sie erreichen? Klicken Sie auf das Listenelement? So müssen Sie onData mit komplexen Matcher verwenden, wie:

onData(allOf(is(instanceOf(String.class)), is("Americano"))).perform(click()); 

Sie können mehr über onData und onView in official espresso tutorial lesen.