Recherche…


Exemple de matcher personnalisé pour tester le message d'erreur TextView

  1. Créez un nom de classe ErrorMatcher dans votre package de test avec le code ci-dessous:
public class ErrorMatcher {

    @NonNull
    public static Matcher<View> withError(final String expectedErrorText) {
        Checks.checkNotNull(expectedErrorText);
        return new BoundedMatcher<View, TextView>(TextView.class) {    
            @Override
            public void describeTo(final Description description) {
                description.appendText("error text: ");
                stringMatcher.describeTo(description);
            }
                
            @Override
            public boolean matchesSafely(final TextView textView) {
                return expectedErrorText.equals(textView.getError().toString());
            }
        };
    }
}

La logique de correspondance consiste à trouver l'élément TextView dont le texte de message d'erreur est égal à la valeur du texte d'erreur attendu, en passant par le sous-ensemble de champs TextView présents dans la hiérarchie de disposition. describeTo méthode describeTo est utilisée pour la sortie de débogage.

  1. Vous pouvez ensuite utiliser votre matcher personnalisé dans le scénario de test, comme indiqué ci-dessous:
@Test  
public void verifiesSignInErrorIsShown() {
    onView(withId(R.id.email_sign_in_button)).perform(click());
    onView(ErrorMatcher.withError("Your error text")).check(matches(isDisplayed()));
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow