При использовании эспрессо для выполнения теста необходимо щелкнуть элемент в recyclerView, чтобы открыть его в viewPager, и чтобы проверить, что содержимое текущего представления в viewpager является тем, на который щелкают в recyclerView.
var viewInteraction = onView(withId(R.id.recyclerview_list))
.perform(RecyclerViewActions
.scrollToPosition<RecyclerView.ViewHolder>(10))
sleep(3000)
viewInteraction.perform(click())
в этом случае recyclerView прокручивается до 10-й позиции, а затем по элементу щелкается, что открывает окно просмотра с содержимым этого 10-го элемента.
Макет для элемента в recyclerViewимеет TextView, который имеет R.id.content_lablel.И макет в фрагменте, содержащем видовой пейджер, также имеет TextView с R.id.content_label, который должен отображаться с тем же текстом метки для 10-го элемента recyclerView.
Он может проверить, открыт ли viewPagerи отображается представление с идентификатором R.id.content_label:
// check viewerPager is opened
onView(withId(R.id.pagerFragmentContainer)).check(matches(isDisplayed()))
//check the TextView with id of R.id.content_label is in display
onView(allOf(withId(R.id.content_label), isCompletelyDisplayed())
, но как проверить, что текст TextView с этим R.id.content_label совпадает с текстом в 10-м элементе recycleView?
в основном ищет что-то вроде
onView(allOf(withId(R.id.content_label), isCompletelyDisplayed()).check(matches(withText("Hello!")
, но текст "Hello!"
на самом деле является текстом из 10-го элемента recyclerView, а не жестко закодирован.