如何使用Espresso检查TextinputLayout的错误

时间:2016-05-06 12:57:23

标签: android android-espresso

我希望能够针对具有错误集的TextInputLayout视图运行匹配器。

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

withTest()似乎不适用于TextInputLayout错误消息。还有其他人知道怎么做吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

实施自定义ViewMatcher以测试不支持开箱即用的视图。

以下是TextInputLayout

的withError匹配器的示例实现
 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));
}