问题是,你试图匹配列表视图本身与instanceOf(ListView.class)作为onData()的参数。 onData()需要一个数据匹配器匹配ListView的适应数据,而不是ListView本身,也不是Adapter.getView()返回的View,而是实际数据。
如果你在你的生产代码中有这样的东西:
ListView listView = (ListView)findViewById(R.id.myListView);
ArrayAdapter adapter = getAdapterFromSomewhere();
listView.setAdapter(adapter);
然后Espresso.onData()的Matcher参数应该匹配所需的MyDataClass实例。
所以,这样的东西应该工作:
onData(hasToString(startsWith("ASDF"))).perform(click());
(你可以使用另一个Matcher使用org.hamcrest.Matchers的方法)
如果您的活动中有多个适配器视图,则可以使用视图匹配器调用ViewMatchers.inAdapterView(),该视图匹配器指定AdapterView,如下所示:
onData(hasToString(startsWith("ASDF")))
.inAdapterView(withId(R.id.myListView))
.perform(click());