Ricerca…


Esempio di matcher personalizzato per testare il messaggio di errore TextView

  1. Crea un nome classe ErrorMatcher nel 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.

  1. 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