Comment tester l'apparence d'un message Toast
est-ce que quelqu'un sait comment tester l'apparence d'un message de Toast sur une activité?
j'utilise un code semblable à celui que l'OP a affiché sur cette question pour tester le déroulement de mon programme d'une activité à l'autre. J'aimerais aussi pouvoir tester les messages sur les toasts pour des activités particulières.
7 réponses
est-ce que n'importe qui saurait tester pour le apparition d'un message de Toast sur un L'activité?
vous ne pouvez pas ... désolé. Par quoi, je veux dire qu'il n'y a aucun moyen de demander à Androïde "Hé, est-ce qu'un Toast est affiché? et a quoi elle ressemble?".
Hm, en fait, il est une possibilité de tester l'apparence d'un toast. Il suffit de créer une sous-classe de Toast (par exemple MyOwnToast) et utilisez celui-ci dans votre programme au lieu de Toast. Dans la présente sous-classe, vous pouvez écraser la méthode show() pour vous informer que le Toast est affiché.
en outre, vous pouvez stocker le Toast dans la méthode show() en sorte D'une base de Toast singleton d'où vous pouvez accéder au Toast et sa vue aussi après qu'il a été montré et détruit (n'ont pas testé cela avec des Toasts, mais je le fais souvent avec le résultat des intentions des activités pour les garder disponibles pour d'autres tests après qu'ils aient été détruits - il ne devrait donc pas être un problème de mettre en œuvre cela avec des Toasts).
attention: peut-être vous devez cloner l'objet Toast ou c'est la vue correspondante pour la base de données Toast car probablement il sera null après que le Toast a été détruit. Espérons que cette aide!
nous pouvons maintenant tester les messages toast en utilisant robolectric
. L'exemple ci-dessous montre comment notre équipe s'y prend pour le moment:
@Test
public void ccButtonDisplaysToast() throws NullPointerException {
Button ccRedButton = (Button) findViewById(R.id.cc_red);
cc_red.performClick(); --> this calls the actual onClickListener implementation which has the toast.
ShadowLooper.idleMainLooper(YOUR_TIME_HERE); --> This may help you.
assertThat(ShadowToast.getTextOfLatestToast().toString(), equalTo("TEST_YOUR_TEXT_HERE"));
}
Espérons que cette aide
je vérifie, les travaux suivants:
if(someToast == null)
someToast = Toast.makeText(this, "sdfdsf", Toast.LENGTH_LONG);
boolean isShown = someToast.getView().isShown();
vous pouvez choisir Robolectric framework de test.Pour vérifier toast, vous pouvez l'utiliser comme suit:
assertTrue(ShadowToast.showedCustomToast("message", R.id.message)); //R.id.message: textView ID
vous pouvez vérifier que le toast a été montré par le message
ShadowToast.showedToast("expected message")
si vous utilisez un toast personnalisé
ShadowToast.showedToast("expected message", R.id.yourToastId)
Je l'utilise comme:
wait_for_text("Notification message to be verified", timeout: 30)
il s'agit d'une autre façon qui sert partiellement l'objectif.