好吧,我想我有同样的问题,我设法解决它。
的问题是,除非你正在使用的AsyncTask来填充RecyclerView,咖啡不等待后台线程进行下一次操作之前完成。
因此,它会搜索位于位置2,的项目,由于后台线程仍在运行且回收站视图尚未加载,它将返回IllegalStateException。
即使我不会建议使用此,您可以检查测试工作非常迅速,通过添加一个Thread.sleep()方法(一段合理时间),像这样:
@Test
public void myTest() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
onView(withId(R.id.recyclerList))
.perform(RecyclerViewActions.actionOnItemAtPosition(2, click()));
//assert something
}
更好(并且正确)解决方案到这个问题,就是用Idling Resources。
这short and concise video真的帮助我了解如何使用IdlingResources(特别是CountingIdlingResources)。
你的UI测试现在应该是这个样子:
@Test
public void myTest() {
registerIdlingResources(/*put your IdlingResource here*/);
onView(withId(R.id.recyclerList))
.perform(RecyclerViewActions.actionOnItemAtPosition(2, click()));
//assert something
}
我希望它帮助。
你设法解决了吗?我有完全相同的问题,没有人回答我的问题要么 – onVal
不幸的是,我无法解决:-( –
请提供一个[mcve]重现错误。 –