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é!
Besoin d'utiliser doesNotExist()
à la place de .. Trouvé ici .
Travaillez aussi avec votre méthode, mais à peu près comme ceci:
onView(withId(R.id.next)).check(matches(not(isDisplayed())));
onView(withText("")).check(doesNotExist());
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());
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)))