2017-04-13 1 views
0

J'ai un TabLayout avec un ViewPager, à la page 3 il y a un SwitchCompat Je veux effectuer un click() sur, mais il ne fait rien.Espresso: cliquez sur() sur SwitchCompat ne fonctionne pas

@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 

} 

C'est l'erreur

android.support.test.espresso.base.DefaultFailureHandler$AssertionFailedWithCauseError: 'with checkbox state: is ' doesn't match the selected view. Expected: with checkbox state: is true

Le SwitchCompat semble avoir les propriétés suivantes:

Got: "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}"

L'erreur indique que le commutateur est pas cochée, mais le problème semble se produire avant, parce que le commutateur reste simplement non coché, le perform(click()) semble ne rien faire. Quelqu'un peut-il aider?

Répondre

1

J'ai posté une solution alternative qui implique la création d'une ViewAction personnalisée pour définir l'état du commutateur (ou tout Checkable d'ailleurs) au lieu d'utiliser une action de clic. Cela garantit que votre action est indépendante de l'état.

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

Donc, peu importe si elle a déjà été vérifiée ou non, vous êtes assuré qu'il sera basculée à l'état que vous attendez.

+0

Oui merci je viens de l'utiliser et ça marche super bien. Cependant, pourquoi le click() ne fonctionne pas? N'est-il pas supposé fonctionner avec un perform.click()? – dan