Espresso:SwitchCompat上的click()无效

时间:2017-04-13 06:09:25

标签: android android-espresso

我有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,visibility = VISIBLE,width = 996,height = 100,has-focus = false,has-focusable = true,has-window-focus = true, is-clickable = true,is-enabled = true,is-focused = false,is-focusable = true,is-layout-requested = false,is-selected = false,root-is-layout-requested = false,has- input-connection = false,x = 0.0,y = 0.0,text =GLÜCKSSPIRALE+ 5,00€,input-type = 0,ime-target = false,has-links = false,is-checked = false}“

该错误表示未检查Switch,但问题似乎在之前发生,导致Switch保持未选中状态,perform(click())似乎什么都不做。

1 个答案:

答案 0 :(得分:1)

我发布了一个替代解决方案,涉及创建自定义ViewAction以设置切换状态(或任何可检查的内容),而不是使用单击操作。这可以确保您的操作与州无关。

https://stackoverflow.com/a/39650813/1947601

因此,无论先前是否检查过,您都可以保证它会切换到您期望的状态。