我有一个ListView:
我想单击ListView中的特定按钮。
如果要使用onData选择器进行选择:
onData(withId(R.id.button))
.inAdapterView(withId(R.id.list_view))
.atPosition(1)
.perform(click());
我得到这个错误:
android.support.test.espresso.PerformException: Error performing 'load adapter data' on view 'with id: com.example.application:id/list_view'.
...
我该如何解决?
最佳答案
onData()
需要您感兴趣的项目的对象匹配器。如果您不关心适配器中的数据,则可以使用Matchers.anything()
有效地匹配适配器中的所有对象。或者,您可以为商品创建一个数据匹配器(取决于适配器中存储的数据),然后将其传递以进行更确定的测试。
至于按钮-您正在寻找的是onChildsView()
方法,该方法允许传递与onData().atPosition()
中匹配的listitem后代的viewmatcher
结果,您的测试将如下所示:
onData(anything()).inAdapterView(withId(R.id.list_view))
.atPosition(1)
.onChildView(withId(R.id.button))
.perform(click());