Intereting Posts
Android – меняет ли идентификатор R.Resource во время выполнения Отто против LocalBroadcast: ImageView переформатируется, когда на нем нарисована рамка Как получить «сетевое» время (из параметра «Автоматический» под названием «Использовать сетевые значения»), а не время на телефоне? GetWidth Возвращает 0 в фрагменте, getPaddingLeft Возвращает Non-Zero Размер значка Google Glass Launcher Нарушение счетчика активности экземпляра StrictMode (2 экземпляра, 1 ожидается) при вращении полностью пустой активности Невозможно добавить событие в календарь в android Отправлять push-уведомления на андроид без использования C2DM Поведение GLSurfaceView onDrawFrame BLE GATT onCharacteristicChanged не вызывается после подписки на уведомление Почему мой значок HomeAsUp исчез после того, как я использовал action actionview в панели действий Что означает «включить API хранения DOM»? Android / SQLite – операция бит в выражении WHERE ProgressDialog – как удалить номера

Android Espresso. Как проверить ErrorText в TextInputLayout

В основном, я пытаюсь проверить, что после неправильного входа в систему я обнаружил ошибку в поле электронной почты.

Представление:

<android.support.design.widget.TextInputLayout android:id="@+id/ti_email" android:paddingEnd="10dp" android:paddingTop="10dp" android:paddingLeft="10dp" android:paddingRight="10dp" android:paddingStart="10dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/et_email" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/authentication_email_placeholder" android:inputType="textEmailAddress" android:maxLines="1" android:textSize="16sp" tools:text="@string/placeholder_email"/> </android.support.design.widget.TextInputLayout> 

Я пытаюсь сделать это вот так:

 onView(withId(R.id.et_email)) .check(matches(hasErrorText( ctx.getString(R.string.authentication_error_empty_email)))); 

Это работает с CustomMatcher:

 public static Matcher<View> hasTextInputLayoutErrorText(final String expectedErrorText) { return new TypeSafeMatcher<View>() { @Override public boolean matchesSafely(View view) { if (!(view instanceof TextInputLayout)) { return false; } CharSequence error = ((TextInputLayout) view).getError(); if (error == null) { return false; } String hint = error.toString(); return expectedErrorText.equals(hint); } @Override public void describeTo(Description description) { } }; } 

Вы можете написать пользовательский логин:

 public final class CustomItemMatchers { private static class TextInputLayoutErrorMatcher extends BoundedMatcher<Object, Wrapper> { private final Matcher<String> itemTextMatcher; public TextInputLayoutErrorMatcher(final Matcher<String> itemTextMatcher){ super(TextInputLayout.class); this.itemTextMatcher = itemTextMatcher; } @Override public void describeTo(Description description) { description.appendText("with error content: "); itemTextMatcher.describeTo(description); } @Override protected boolean matchesSafely(TextInputLayout til) { if (til == null) { return false; } return itemTextMatcher.matches((til.getError()); } } public static Matcher<Object> withErrorName(final Matcher<String> itemTextMatcher) { checkNotNull(itemTextMatcher); return new TextInputLayoutErrorMatcher(itemTextMatcher); } } 

Вы можете использовать его с помощью

 matches(CustomItemMatchers.withErrorName(equalTo("My Error"))) 

Этот код был написан с помощью Espresso 1, но я надеюсь, что он все еще работает.

Используйте метод setError () EditText Ex: EditText emailEditText;

 if(invalidLogin) emailEditText.setError("Error Message");