如何使用Espresso获取回收者视图列表项目计数

时间:2017-08-15 21:47:08

标签: android junit android-espresso

我可以使用查看操作来执行单个列表项的点击

time

但是,我想返回列表项的数量,并使用循环点击每个列表项而不为每个项目单独编写代码。

如何返回Recycler视图包含的列表项数?也许我需要通过活动直接访问适配器变量?

由于

1 个答案:

答案 0 :(得分:0)

我会将依赖关系存根,以便您可以控制您的测试环境,即如果您输入3个项目,则应该会显示三个项目。您可以使用nenick How to count RecyclerView items with Espresso

的自定义操作进行检查
public class CustomRecyclerViewAssertions {
//Asserts the number of items in a RecyclerView

   public static ViewAssertion AssertItemCount(final int expectedCount) {
     return new ViewAssertion() {
       @Override
       public void check(View view, NoMatchingViewException noViewFoundException) {
         if (noViewFoundException != null) {
           throw noViewFoundException;
         }
         RecyclerView recyclerView = (RecyclerView) view;
         RecyclerView.Adapter adapter = recyclerView.getAdapter();
         assertThat(adapter.getItemCount(), is(expectedCount));
       }
     };
  }
}

使用

调用
onView(withId(R.id.recyclerView)).check(new RecyclerViewItemCountAssertion(3));

一旦你知道有多少物品,你可以使用:

onView(withId(R.id.recyclerView)).perform(
        actionOnItemAtPosition<RecyclerView.ViewHolder>(1, click()))

由于recyclerView显示了同一视图的多个实例,因此我不会浪费时间重复代码来点击每个项目