Как проверить просмотр текста в диапазоне с помощью espresso android

Я знаю, что мы можем использовать expresso для проверки результатов просмотра как таковых: onView((withId(R.id.text_view_name))).check(matches(withText("text_value_here")));, чтобы увидеть, соответствуют ли результаты ожидаемым, но что, если мы хотим убедиться, что он находится в определенном диапазоне значений? Например, не ниже 0.

Как можно написать тестовый код с использованием эспрессо, который гарантирует, что значение пользовательского интерфейса ниже, выше или в определенном диапазоне значений?

Скорее всего, вам нужно будет написать свой собственный сопоставитель.

Code-Apprentice 07.06.2018 08:41
2
1
867
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это легко сделать с помощью специального сопоставителя:

    public class TextViewValueMatcher extends TypeSafeMatcher<View> {
        @Override
        protected boolean matchesSafely(View item) {
            TextView textView = (TextView) item;
            String value = textView.getText().toString();
            boolean matching = <here your condition on the value>;
            return matching;
        }

        @Override
        public void describeTo(Description description) {

        }
    }

А затем использовали как следующее:

Espresso.onView(withId(<some_id>)).check(matches(new TextViewValueMatcher()));

@ Code-Apprentice спасибо за замечание, я отредактировал свой ответ.

Anatolii 07.06.2018 16:10

Отличный ответ! Для OP: вы можете изменить это, чтобы вернуть сопоставитель из заводской функции, например, isBetween(), если вам нужен свободный API, похожий на сопоставители по умолчанию. Вам также нужно будет определить функцию таким образом, чтобы вы могли передавать значения min и max.

Code-Apprentice 07.06.2018 16:31

Идеально! Я создал новый настраиваемый класс и должен был преобразовать строку в int, но он работает так, как задумано, чтобы убедиться, что int не меньше 0. Я думаю, что смогу выяснить остальное для проверки минимального и максимального значений.

Mr.Drew 08.06.2018 08:40

@ Мистер Дрю, я рад, что это помогло!

Anatolii 08.06.2018 14:13

Другие вопросы по теме