web-dev-qa-db-fra.com

correspond (pas (isDisplayed ())) échoue avec NoMatchingViewException

J'essaie de tester l'absence de la vue de l'interface utilisateur. Le sélecteur de vue est comme suit:

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

Le sélecteur fonctionne correctement pour vérifier si la vue est affichée, mais donne une erreur en vérifiant si la vue ne s’affiche pas. J'utilise ceci comme suit:

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

Mais j'obtiens l'erreur suivante:

com.google.Android.apps.common.testing.ui.espresso.NoMatchingViewException: Aucune vue dans la hiérarchie trouvée ne correspond à: avec l'ID: est Si la vue cible ne faisant pas partie de la hiérarchie des vues, vous devrez peut-être utiliser Espresso.onData pour le charger depuis l’un des fichiers suivants AdapterViews: Android.widget.ListView {...}

Cela est étrange. Je vérifie l'absence de l'interface utilisateur et espère que cette vue ne sera pas trouvée. Alors pourquoi Espresso lance une erreur? Veuillez suggérer ce qui pourrait mal se passer ici.

Merci, Étonné!

57
user846316

Besoin d'utiliser doesNotExist() à la place de .. Trouvé ici .

118
user846316

Travaillez aussi avec votre méthode, mais à peu près comme ceci:

onView(withId(R.id.next)).check(matches(not(isDisplayed())));
10
Morozov
onView(withText("")).check(doesNotExist());
10
Olivia Liao

Si vous voulez vérifier si View est/ non visible ou n'existe pas .

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));
            }
        }
    };
}

Usage:

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

Vous pouvez essayer cette option si vous vérifiez la visibilité de la vue "withEffectiveVisibility"

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