Как установить текущую вкладку в viewpager с помощью tablayout

У меня есть пользовательский viewpager (с отключенным отключением по причинам), работающим с tablayout. Содержимое изменяется на основе выбранной вкладки. Я хочу проверить это с помощью эспрессо: 1) Нажмите на определенную вкладку 2) Проверьте некоторые данные на определенной странице вкладки Как мне это сделать. Я новичок в эспрессо

Ответ 1

Есть несколько способов сделать это, простой способ - выбрать элемент по заголовку вкладки, я использую этот код:

Matcher<View> matcher = allOf(withText("TAB TITLE"),
            isDescendantOfA(withId(R.id.customTab)));
onView(matcher).perform(click());
SystemClock.sleep(800); // Wait a little until the content is loaded

Вам нужно только адаптировать сопряжение к макету. Затем проверьте содержимое.

Например:

onView(withId(R.id.someId)).check(matches(isCompletelyDisplayed()));

или

onView(withText(R.string.someText)).check(matches(isCompletelyDisplayed()));

Примеры можно найти здесь в разделе Задание вида просмотра: http://developer.android.com/intl/es/training/testing/ui-testing/espresso-testing.html

Если вы используете RecyclerView для отображения содержимого вкладки, посмотрите на это: Espresso RecyclerView внутри ViewPager

Ответ 2

Espresso следует использовать, когда вы четко знаете, что ожидается в пользовательском интерфейсе, и вы можете проверить его.

В вашем случае, чтобы перейти на любую вкладку, вы можете использовать действие вида, чтобы нажать на эту вкладку. Чтобы проверить данные, сначала вы должны знать, какие данные должны присутствовать на этой вкладке, а затем просто использовать сопоставления, чтобы проверить, отображаются ли они или нет.