有没有可能:
-是否要禁用所有动画以供回收者查看或在UI线程上运行它们以进行意式浓缩咖啡测试?
或
-将空闲资源添加到android.support.v7.recyclerview.extensions.ListAdapter吗?
问题如下:espresso测试抛出异常
android.support.test.espresso.PerformException:在视图“ ID为XXX:id / items_rcv”的视图上执行“ android.support.test.espresso.contrib.RecyclerViewActions$ActionOnItemAtPositionViewAction@3d4956f”时出错。
尝试执行以下代码时:
//... code that executes recyclerView.adapter.submitList(items)
onView(withId(R.id.items_rcv))
.perform(RecyclerViewActions.actionOnItemAtPosition<ViewHolder>(
0, click()
));
问题是执行单击操作时,项目不可见。由于RecyclerView的适配器是从 android.support.v7.recyclerview.extensions.ListAdapter :
扩展而来的,因此延迟显示了它们。class ItemsAdapter : ListAdapter<Item, RecyclerView.ViewHolder>() {
...
}
因此它使用了AsyncListDiffer,它在回收器视图中显示了一些动画。
提前谢谢
更新:
以下内容没有帮助: 1)将BackgroundThreadExecutor设置为AsyncListDiffer的MainThreadExecutor
ItemsAdapter(AsyncDifferConfig.Builder<Item>(ItemsDiffCallback)
.setBackgroundThreadExecutor(MainThreadExecutor())
.build())
2)为RecyclerView禁用itemAnimator
mActivityTestRule.activity.findViewById<RecyclerView>(R.id.items_rcv).itemAnimator = null
答案 0 :(得分:0)
您可以创建CountingIdlingResource并递增,然后填充列表,并在列表完成后递减。
只记得在您的@Before和@After上注册IdlingResource,就像这样
IdlingRegistry.getInstance().register(rule.getIdlingResource()); //before
IdlingRegistry.getInstance().unregister(rule.getIdlingResource()); //after