当recyclerView本身返回AmbiguousViewMatcherException时,在Espresso中该怎么办?

时间:2017-08-22 14:31:57

标签: java android automated-tests kotlin android-espresso

问题是我有一个标签式视图,每个页面都包含相同的recyclerView,其中包含与该选项卡相关的不同数据。如果我没有很好地描述它,它与本教程中描述的基本相同:https://github.com/codepath/android_guides/wiki/ViewPager-with-FragmentPagerAdapter

我正在使用Espresso创建仪器测试,当我尝试调用

onView(withId(R.id.recycler_view)

与RecyclerViewAction一起使用时,我返回了AmbiguousViewMatcher,告诉我层次结构中有多个recyclerView。如何指定特定的recyclerView?我假设我需要一个&custom;定制回收器调制器'某种

1 个答案:

答案 0 :(得分:0)

OK!所以首先我需要给每个视图一个标签 (参见petey对How to catch a View with Tag by Espresso in Android?的答案)

我找到了onCreate并添加了:

    DCLARE TABLE NoteDetail (
      NoteId      number(19,0),
      NoteNumber  number(4,0),
      NoteText    varchar2(4000)
    );

这使我能够在我的测试课程中设置这个(fyi I' m使用Kotlin)

recyclerView.setTag(screenTab.getId())

这样我的测试就像这样开始:

  private val tab1RecyclerView = onView(
      allOf(
          withId(R.id.recycler_view),
          withTagValue(`is`(Id.tab1))
      )
  )