【发布时间】:2018-12-20 15:48:51
【问题描述】:
有没有可能:
- 禁用回收器视图的所有动画或在 UI 线程上运行它们以使用 espresso 进行测试?
或者
- 将 idlingresources 添加到 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
【问题讨论】:
标签: android android-recyclerview android-animation android-espresso