Эспрессо: нажмите () на SwitchCompat не работает

У меня есть TabLayout с ViewPager, на странице 3 есть SwitchCompat Я хочу выполнить click() на, но это ничего не делает.

@Test
public void checkSummaryPageUpdates_worksCorrect() {

    onView(withId(R.id.view_pager)).perform(swipeLeft());
    onView(withId(R.id.view_pager)).perform(swipeLeft());

    onView(withId(R.id.gs_switch)).check(matches(isDisplayed()));
    onView(withId(R.id.gs_switch)).perform(click());
    onView(withId(R.id.gs_switch)).check(matches(isChecked())); //  AssertionFailed

}

Это ошибка

android.support.test.espresso.base.DefaultFailureHandler$AssertionFailedWithCauseError: 'with checkbox state: is ' не соответствует выбранному представлению. Ожидаемый: с состоянием флажка: верно

SwitchCompat, кажется, имеет следующие свойства:

Получил: "SwitchCompat{id=2131689643, res-name=gs_switch, видимость =VISIBLE, ширина =996, высота =100, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=true, is-enabled=true, is-focus =false, is-focusable=true, is-layout-запрашивается =false, is-selected=false, root-is-layout-запрашивается = false, имеет-вход-соединение =false, x=0.0, y=0.0, текст =GLÜCKSSPIRALE +5,00 €, тип ввода =0, ime-target=false, has-links=false, is-checked=false}"

Ошибка говорит о том, что коммутатор не проверен, но проблема, кажется, возникла раньше, потому что коммутатор просто не проверяется, perform(click()) кажется, ничего не делает. Кто-нибудь может помочь?

1 ответ

Я опубликовал альтернативное решение, которое включает создание пользовательского ViewAction для установки состояния переключателя (или любого Checkable в этом отношении) вместо использования действия щелчка. Это гарантирует, что ваше действие не зависит от государства.

/questions/10554355/android-espresso-ustanovite-flazhok-esli-ne-otmechen/10554380#10554380

Таким образом, независимо от того, была ли она ранее проверена или нет, вы гарантированно переключитесь в ожидаемое состояние.

Другие вопросы по тегам