android - 单元测试 RecyclerView OnItemTouchListener Robolectric

标签 android unit-testing android-recyclerview robolectric

所以在我的测试中调用它来布局 recyclerview 之后:

recyclerView.addOnItemTouchListener(listener);
recyclerView.measure(0, 0); 
recyclerView.layout(0, 0, 100, 10000);

我的 OnItemTouchListener 是:

listener = new RecyclerOnTouchListener(this, new RecyclerOnTouchListener.OnItemClickListener() {
                        @Override
                        public void onItemClick(View v, int position) {
                            Toast.makeText(this, "Sample toast", Toast.LENGTH_SHORT).show();
                        }
                    });

我想声明:

Assertions.assertThat(ShadowToast.getTextOfLatestToast()).isEqualToIgnoringCase("Sample Toast");

我需要在 recyclerview 上模拟项目点击。我正在做的是:

recyclerView.findViewHolderForAdapterPosition(0).itemView.performClick();
recyclerView.performClick()

并且它们都返回 false,这意味着它们中没有 onclick 监听器被调用。

那么我们如何在recyclerview中真正测试OnItemTouchListener呢?在 Robolectric 中?

如有任何帮助,我们将不胜感激。谢谢!

最佳答案

我有一个类似的问题,通过在 setAdapter 之前添加行来解决:

    recyclerView.setLayoutManager(LinearLayoutManager(this))

关于android - 单元测试 RecyclerView OnItemTouchListener Robolectric,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38650121/

相关文章:

ScrollView 中的 Android LinearLayout

android - 如何在 Android Things 上运行 TensorFlow Inference,例如对图像进行分类?

android - 如何正确测试appwidget?

java - 为具有两个 When 语句的测试获取 WrongTYpeOfReturnValue

android - 加载时检查 RecyclerView 中的 CheckBox

java - 如何在android中显示警报时检测搜索按钮

在 PlayStore 上按名称或包名称搜索时未显示 Android 应用程序

angular - 如何在 Angular 中使用 Jasmine 正确地对 API 服务的抛出错误进行单元测试?

android - RecyclerView 相比 ListView 有什么增强?

java - RecyclerView onClick 给出了错误的项目