android-espresso
Come creare Matchers personalizzati?
Ricerca…
Esempio di matcher personalizzato per testare il messaggio di errore TextView
- Crea un nome classe
ErrorMatchernel tuo pacchetto di test con il seguente codice:
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 logica di corrispondenza consiste nel trovare l'elemento TextView , il cui testo del messaggio di errore è uguale al valore del testo dell'errore previsto, passando per il sottoinsieme dei campi TextView presenti nella gerarchia del layout. describeTo metodo describeTo viene utilizzato per l'output di debug.
- Quindi puoi utilizzare il tuo matcher personalizzato nel test case come mostrato di seguito:
@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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow