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.

33
demandé sur Community 2010-03-09 00:55:11

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?".

22
répondu CommonsWare 2010-03-08 23:01:20

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!

12
répondu ubuntudroid 2010-03-29 14:28:41

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

8
répondu user2511882 2015-06-16 16:10:42

je vérifie, les travaux suivants:

if(someToast == null)
    someToast = Toast.makeText(this, "sdfdsf", Toast.LENGTH_LONG);
boolean isShown = someToast.getView().isShown();
6
répondu Oleksii Kolotylenko 2012-05-16 19:08:19

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
4
répondu panda 2014-08-08 07:11:42

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)
2
répondu Kevin Crain 2016-03-30 08:25:06

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.

-3
répondu Aditya Saxena 2015-04-06 09:58:50