Подтвердить что ты не робот

Match (not (isDisplayed())) не работает с NoMatchingViewException

Я пытаюсь проверить отсутствие представления пользовательского интерфейса. Селектор представлений выглядит следующим образом:

public static ViewInteraction onMyTestUi() {
    return onView(withId(R.id.myTestId));
}

Селектор работает отлично, чтобы проверить, отображается ли представление, но дает ошибку при проверке, не отображается ли представление. Я использую это следующим образом:

 onMyTestUi().check(matches(not(isDisplayed())));

Но я получаю следующую ошибку:

com.google.android.apps.common.testing.ui.espresso.NoMatchingViewException: Нет совпадений в иерархии: с id: is If целевое представление не является частью иерархии представлений, вам может потребоваться использовать Espresso.onData, чтобы загрузить его из одного из следующих AdapterViews: android.widget.ListView {...}

Это странно. Я проверяю отсутствие пользовательского интерфейса и его ожиданий, что это мнение не будет найдено. Тогда почему эспрессо бросает ошибку? Пожалуйста, представьте, что здесь может быть неправильным.

Спасибо, Пораженный!

4b9b3361

Ответ 1

doesNotExist() этого нужно использовать doesNotExist(). Нашел здесь.

Ответ 2

onView(withText("")).check(doesNotExist());

Ответ 3

Также работайте с вашим методом, но примерно так:

onView(withId(R.id.next)).check(matches(not(isDisplayed())));

Ответ 4

Если вы хотите проверить, не видна ли View нет или нет.

public static ViewAssertion isNotDisplayed() {
    return new ViewAssertion() {
        @Override
        public void check(View view, NoMatchingViewException noView) {
            if (view != null && isDisplayed().matches(view)) {
                throw new AssertionError("View is present in the hierarchy and Displayed: "
                        + HumanReadables.describe(view));
            }
        }
    };
}

Применение:

onView(withId(R.id.someView)).check(isNotDisplayed());

Ответ 5

Вы можете попробовать эту опцию, если вы проверяете видимость представления "withEffectiveVisibility"

    onViewWithId(R.id.YOURVIEW).check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.GONE)))