Ответ 1
doesNotExist()
этого нужно использовать doesNotExist()
. Нашел здесь.
Я пытаюсь проверить отсутствие представления пользовательского интерфейса. Селектор представлений выглядит следующим образом:
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 {...}
Это странно. Я проверяю отсутствие пользовательского интерфейса и его ожиданий, что это мнение не будет найдено. Тогда почему эспрессо бросает ошибку? Пожалуйста, представьте, что здесь может быть неправильным.
Спасибо, Пораженный!
doesNotExist()
этого нужно использовать doesNotExist()
. Нашел здесь.
onView(withText("")).check(doesNotExist());
Также работайте с вашим методом, но примерно так:
onView(withId(R.id.next)).check(matches(not(isDisplayed())));
Если вы хотите проверить, не видна ли 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());
Вы можете попробовать эту опцию, если вы проверяете видимость представления "withEffectiveVisibility"
onViewWithId(R.id.YOURVIEW).check(matches(ViewMatchers.withEffectiveVisibility(ViewMatchers.Visibility.GONE)))