有没有办法用Robolectric来模拟点击一个RecyclerView
项目?
到目前为止,我已经尝试在RecyclerView
的第一个可见位置获取View
,但始终是null
。它的getChildCount()
总是返回0
,而findViewHolderForPosition
总是null
。适配器从getItemCount()
返回一个非0数字(适配器中肯定有项)。
我使用的是Robolectrial2.4快照。
发布于 2014-11-22 04:28:26
似乎问题在于,RecyclerView
需要在Robolectric中手动测量和布局。调用它可以解决这个问题:
recyclerView.measure(0, 0);
recyclerView.layout(0, 0, 100, 10000);
发布于 2017-03-26 11:31:48
使用Robolectric 3,您可以使用visible():
ActivityController<MyActivity> activityController = Robolectric.buildActivity(MyActivityclass);
activityController.create().start().visible();
ShadowActivity myActivityShadow = shadowOf(activityController.get());
RecyclerView currentRecyclerView = ((RecyclerView) myActivityShadow.findViewById(R.id.myrecyclerid));
currentRecyclerView.getChildAt(0).performClick();
这消除了手动触发视图测量的需要。
发布于 2021-07-06 23:39:36
只需调用
Robolectric.flushForegroundThreadScheduler()
在performClick()之前,确保所有ui操作(包括填充数据集后回收器视图的度量和布局阶段)都已完成
https://stackoverflow.com/questions/27052866
复制相似问题