2016-05-06 1 views
5

Я хочу, чтобы иметь возможность запускать сопоставление с представлением TextInputLayout с установленной ошибкой.Как вы можете проверить ошибку TextinputLayout с помощью Espresso

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

с тестом(), похоже, не работает с сообщением об ошибке TextInputLayout. Кто-нибудь еще знает, как это сделать?

Благодарим за помощь.

ответ

3

Внедрение пользовательского ViewMatcher для проверки представлений, которые не поддерживаются из коробки.

Ниже приведен пример реализации withError согласовани для 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)); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^