La vérification de toast message dans android espresso
Serait ce que quelqu'un sait comment faire pour tester l'apparence d'un Toast de message dans android espresso? Dans robotium facile & j'ai utilisé, mais a commencé à travailler dans l'espresso, mais ne pas arriver à la commande exacte.
- Toute la solution suivante ne fonctionnera pas si l'activité est terminée en même temps que le pain est affiché.
- avez-vous trouvé une solution qui comprendra Toast le contrôle même dans le cas où l'Activité est fini?
- Malheureusement pas. Si je me souviens bien, dans le cas de finition en Activité, j'ai choisi de vérifier que l'Activité est terminée.
- merci pour l'info
Vous devez vous connecter pour publier un commentaire.
Un peu longue déclaration qui fonctionne pour moi:
is()
méthode est redondantActivityTestRule
. Vous pouvez obtenir l'activité de cette règle à l'aide deActivityTestRule#getActivity()
.onView(withText(R.string.toast_text)).inRoot(withDecorView(not(mActivityRule.getActivity().getWindow().getDecorView()))).check(matches(isDisplayed()));
Accepté la réponse est bonne, mais ne fonctionne pas pour moi. J'ai donc cherché un peu et trouvé cet article de blog.
Cela m'a donné une idée de comment le faire, et j'ai mis à jour la solution ci-dessus.
J'ai d'abord mis en œuvre le ToastMatcher:
Puis j'ai mis en place ma méthode:
MobileViewMatchers est un conteneur pour l'accès à la rapprochement. Là, j'ai défini la méthode statique
isToast()
.Cela fonctionne comme un charme pour moi.
Assurez-vous d'abord à l'importation:
À l'intérieur de votre classe, vous avez probablement une règle comme ceci:
À l'intérieur de votre test:
Cela a fonctionné pour moi, et c'était assez facile à utiliser.
D'abord créer un cutom Toast Matcher que nous pouvons utiliser dans notre cas de test -
1. Test si le Toast Message est Affiché
2. Test si le Toast Message n'est pas Affiché
3. Test id le pain contient des Message Texte
Grâce,
Anuja
Remarque - cette réponse est de Ce POST.
Bien que la question a accepté de répondre - qui d'AILLEUR ne fonctionne pas pour moi - je voudrais ajouter ma solution dans Kotlin qui j'ai tiré de Thomas R. la réponse:
J'espère que ce sera utile pour plus tard lecteurs, - l'utilisation est décrite dans le commentaire.
Je dirais pour le toast de messages d'abord définir votre règle
alors, quel que soit toast texte du message, vous êtes à la recherche pour le type entre guillemets
par exemple, j'ai utilisé "adresse email Invalide"
Si vous êtes en utilisant le plus récent Android Outils de Test de Jetpack, vous le savez, que ActivityTestRule est obsolète et vous devez utiliser ActivityScenario ou ActivityScenarioRule(qui contient le premier).
Conditions préalables. Créer decorView variable et l'affecter en avant des essais;
Test lui-même
getcontexteapplication() peuvent être prises à partir de
androidx.test.core.app.ApplicationProvider.getApplicationContext;
J'écris à mon habitude toast matcher:
Et de l'utiliser comme ceci:
Je suis assez nouveau à cela, mais j'ai fait une classe de base BaseTest' a l'ensemble de mes actions (balayage, clic, etc.) et les vérifications (vérification de texte pour le contenu, etc.).
La façon dont les Toasts sont mis en œuvre permet de détecter un toast a été affiché. Cependant il n'y a aucun moyen de voir si un Toast a été demandé, à travers un appel à afficher()) ou à bloquer entre la période de temps entre show() et quand le pain est devenu visible. C'est l'ouvre d'insolubles problèmes de timing (que vous ne pouvez l'adresse thru sommeil & espère).
Si vraiment vous voulez vraiment pour le vérifier, voici un pas-si-jolie alternative à l'aide Mockito et un test spy: