2016-01-07 1 views
0

Je souhaite vérifier qu'il existe une vue sur l'interface utilisateur qui mathématise un texte arbitraire. Par conséquent, je suis en utilisant:La vue testée Espresso est en dessous de la boîte de dialogue et par conséquent, Espresso ne la trouve pas.

onView(withId(R.id.my_view_id)).check(matches(withText("my text")));

Le problème est que selon le niveau de la batterie de l'appareil il pourrait y avoir une boîte de dialogue disant que le niveau de la batterie est faible. La boîte de dialogue affichée est AlertDialog normale.

Mon test fonctionne correctement si je ne montre pas la boîte de dialogue, le moment où je vais montrer l'échec de l'instruction espresso ci-dessus.

Comment puis-je dire à expresso que je ne me soucie pas de la boîte de dialogue et je veux juste trouver la vue? Comme Espresso essaie de trouver la vue R.id.my_view_id sur le AlertDialog.

Répondre

0

AFAIK il n'y a aucun moyen de faire cela. De RootViewPicker.java:

// when an android.app.dialog is shown 
// - again, this is getting all the users attention, so it gets the test attention 
// too. 

Je vous recommande de se moquant votre logique de dialogue de la batterie de sorte que vous pouvez contrôler si elle est affichée ou non lors de l'essai. Voir http://blog.sqisland.com/2015/04/dagger-2-espresso-2-mockito.html et https://gum.co/AndroidTestSharedPref pour plus d'informations.

0

Eh bien, je vois aussi une autre solution que le chiuki.

Il y a annotation @Before que vous pouvez ajouter à la méthode comme

@Before 
public void checkIfAlertDialogIsShown() { 
    //your code 
} 

Cette méthode courir avant chaque test Espresso. Donc, vous pouvez vérifier si cette situation de batterie faible se produit.

Malheureusement, Espresso ne peut pas afficher les notifications système AlertDialog. Pour ce faire, vous pouvez utiliser un autre excellent outil de Google appelé uiautomater. Cela fonctionne bien avec Espresso, donc vous pouvez utiliser les deux. Donc, dans la méthode annotée @Before, vous devriez vérifier en utilisant le framework uiatomater si cela se produit. Si la valeur est true, vous fermez ce dialogue.

Vérifiez ces liens pour en savoir plus sur uiatomator:

espère que cela aide