android-espresso
Comment créer des matchers personnalisés?
Recherche…
Exemple de matcher personnalisé pour tester le message d'erreur TextView
- Créez un nom de classe
ErrorMatcherdans 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.
- 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