2016-05-06 9 views
5

Ich möchte einen Matcher gegen eine TextInputLayout-Ansicht, die eine Fehlermenge festgelegt hat, ausführen können.Wie können Sie einen TextinputLayout Fehler mit Espresso überprüfen

onView(withId(R.id.myTextInputLayout)).check(matches(withText('myError'))); 

withTest() scheint nicht mit der TextInputLayout-Fehlermeldung zu arbeiten. Weiß sonst jemand, wie man das macht?

Vielen Dank für Ihre Hilfe.

Antwort

3

Implementieren Sie einen benutzerdefinierten ViewMatcher, um Ansichten zu testen, die nicht standardmäßig unterstützt werden. Hier

ist eine beispielhafte Implementierung von withError Matcher für TextInputLayout

public static Matcher<View> withErrorInInputLayout(final Matcher<String> stringMatcher) { 
    checkNotNull(stringMatcher); 

    return new BoundedMatcher<View, TextInputLayout>(TextInputLayout.class) { 
     String actualError = ""; 

     @Override 
     public void describeTo(Description description) { 
      description.appendText("with error: "); 
      stringMatcher.describeTo(description); 
      description.appendText("But got: " + actualText); 
     } 

     @Override 
     public boolean matchesSafely(TextInputLayout textInputLayout) { 
      CharSequence error = textInputLayout.getError(); 
      if (error != null) { 
       actualError = error.toString(); 
       return stringMatcher.matches(actualError); 
      } 
      return false; 
     } 
    }; 
} 

public static Matcher<View> withErrorInInputLayout(final String string) { 
    return withErrorInInputLayout(is(string)); 
} 
Verwandte Themen