Как можно проверить эспрессо android.widget.TextView setError?

У меня есть password.setError(getResources().getString(R.string.incorrect_data)); Если я установил неверный пароль – покажите textView с текстом «Недопустимые данные!», Мне нужно проверить его с помощью Espresso, я пишу:

 onView(withText(R.string.incorrect_data)).check(matches(isDisplayed())); 

Но это неправильно, у меня есть:

 android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with string from resource id: <2131493034>[incorrect_data] value: Invalid data! If the target view is not part of the view hierarchy, you may need to use Espresso.onData to load it from one of the following AdapterViews:android.widget.ListView{307b4f3a IFED.VC. ......ID -480,0-0,1022 #7f0a004c app:id/left_drawer} 

И если я пишу: onView(withText("Invalid data!")).check(matches(isDisplayed()));

У меня есть:

 android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with text: is "Invalid data!" If the target view is not part of the view hierarchy, you may need to use Espresso.onData to load it from one of the following AdapterViews:android.widget.ListView{307b4f3a IFED.VC. ......ID -480,0-0,1022 #7f0a004c app:id/left_drawer} 

Я использую Espresso 2:

 import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.matcher.ViewMatchers.withText; import static android.support.test.espresso.Espresso.onView; 

Помоги мне, пожалуйста.

помог мне:

 onView(withId(R.id.password)).check(matches(withError( getActivity().getString(R.string.incorrect_data)))); private static Matcher<View> withError(final String expected) { return new TypeSafeMatcher<View>() { @Override public boolean matchesSafely(View view) { if (!(view instanceof EditText)) { return false; } EditText editText = (EditText) view; return editText.getError().toString().equals(expected); } @Override public void describeTo(Description description) { } }; } 

Я написал специальный шаблон для Espresso 1.x, который сравнивает textColor TextView с заданным значением. Возможно, вы могли бы принять это решение для EditText.getError(...) для Espresso 2.x.

 /** * Returns a matcher that matches {@link TextView}s based on text property value. Note: View's * text property is never null. If you setText(null) it will still be "". Do not use null * matcher. * * @param integerMatcher {@link Matcher} of {@link String} with text to match */ public static Matcher<View> withCurrentTextColor(final Matcher<Integer> integerMatcher) { checkNotNull(integerMatcher); return new BoundedMatcher<View, TextView>(TextView.class) { @Override public void describeTo(Description description) { description.appendText("with text color: "); integerMatcher.describeTo(description); } @Override public boolean matchesSafely(TextView textView) { return integerMatcher.matches(textView.getCurrentTextColor()); } }; } /** * Returns a matcher that matches {@link TextView} based on it's text property value. Note: * View's Sugar for withTextColor(is("string")). */ public static Matcher<View> withCurrentTextColor(int color) { return withCurrentTextColor(is(color)); } 

И затем в вашем тестовом примере:

 onView(withId(R.id.text_warning_title)).check(matches(withCurrentTextColor(activity.getResources().getColor(R.color.black_light)))); 

Эспрессо работает в три шага 1: поиск вида 2: выполнение действия над представлением действие, которое приведет к результату, который вы хотите проверить. 3: Проверьте, делает ли представление то, что он делает. Проверьте действие или результат с помощью некоторых утверждений

 onView(withId(R.id.password_text)).perform(action); onView(withId(R.id.view_for_expected_outcome)).check(expected outcome) 

Перейдите по https://google.github.io/android-testing-support-library/docs/index.html, чтобы узнать больше о Espresso.

Intereting Posts
Отправка SMS с использованием Intent не добавляет получателей на некоторые устройства UnsatisfiedLinkError при модульном тестировании WritableNativeMap Запись кадров, сгенерированных Open GL ES на Android Как избежать дублирования PendingIntents Сдвиг столбца Gridview вверх и вниз при касании этой колонки Если AsyncTask не является внутренним классом … – некоторые вопросы Просмотр в Android ListView без перерисовки EnableAutoActivityTracking не автоматически отслеживает действия? Отключить просмотр списка Android «синий» фон Скрыть мягкую клавиатуру после отклонения диалога Android. При использовании LocationManager.requestLocationUpdates мне нужен WakeLock? Android-сервис останавливается Как проверить доступное пространство на устройстве Android? На SD-карте? В Marshmallow, как вызывать два или более диалоговых окна разрешений один за другим, как Hangouts? Ошибка Не найден ресурс, который соответствует указанному имени (в 'src' со значением '@ drawable / button1')