2017-09-11 3 views
0

J'ai une ListView qui contient une ArrayList. Food.class contient des valeurs de chaîne comme, par exemple, FoodName. Maintenant je veux vérifier si après la suppression d'une ligne de ListView la valeur FoodName n'existe plus à la position spécifique. J'ai essayé code suivant qui ne fonctionne pas:Test Espresso vérifier si la valeur de chaîne de TextView dans ListView n'existe pas

onData(anything()) 
      .inAdapterView(withId(R.id.list)) 
      .atPosition(0) 
      .onChildView(withId(R.id.food_name)) 
      .check("I don't know how to check if string value of food_name which I deleted before does not exist here anymore") 

Merci pour l'aide!

Répondre

0

Vous pouvez faire:

onData(anything()) 
      .inAdapterView(withId(R.id.list)) 
      .atPosition(0) 
      .onChildView(withId(R.id.food_name)) 
      .check(matches(not(withText("Your old text")))); 

ou

onData(anything()) 
      .inAdapterView(withId(R.id.list)) 
      .atPosition(0) 
      .check(matches(not(hasDescendant(withText("Your old text"))))); 

PS. Je regarde le expresso cheatsheet et est très utile quand je fais face à ce genre de questions.

+0

merci pour la réponse, j'ai juste raté ce() matcher ... Oui j'ai déjà utilisé ce cheatsheet mais le non() matcher est une méthode de org.hamcrest.Matchers. C'était la partie manquante et le positionnement exact de ce matcher. En tout cas merci encore! –

+0

Vous avez raison, vous devez parfois connaître les matcheurs hamcrest, certains d'entre eux sont également spécifiés dans la classe comme "Object Matchers" – crgarridos

+0

Personnellement, j'aime utiliser [Barista] (https://github.com/SchibstedSpain/ Barista) pour simplifier l'écriture d'essai – crgarridos