2014-12-29 6 views
8

Ich habe einen Viewpager, der aus Kopien derselben Fragmentansicht besteht. Sie können zwischen ihnen wischen. Ich schreibe einen Espresso-Test und versuche, auf IDs jeder Seite zu behaupten, aber sie sind offensichtlich mehrdeutig, weil mehrere Seiten geladen sind und sie alle die gleichen IDs haben. Ich möchte den Ansichtspager nicht so ändern, dass nur jeweils 1 Seite geladen wird. In meiner Anwendung ist es ineffizient, dies zu tun.Wie überprüfe ich Viewpager Artikel-IDs mit Espresso?

Ich habe auch daran gedacht, Tags zu verwenden und jede Ansicht mit einer eindeutigen Zeichenfolge zu versehen, aber dann ändere ich nur den Quellcode, damit mein Test funktioniert. Das mag ich nicht. Was ist der richtige Weg, um Inhalte auf der Seite eines Viewpagers mit Espresso zu prüfen?

Antwort

2

Angenommen, nur eine der Seiten wird gleichzeitig angezeigt, können Sie mit swipeLeft/swipeRight zu einer Seite wechseln und dann prüfen, ob auf dieser Seite das Richtige angezeigt wird.

There are some examples here.

z.B.

onView(withId(R.id.pager)) 
    .perform(swipeLeft()) 
    .check(matches(hasDescendant(withText("Position #2")))); 
+0

Das Problem besteht nicht beim Wischen, sondern beim Überprüfen des Inhalts. Ich muss Zugriff auf die spezifischen Elemente auf jeder Seite bekommen. Leider kann ich hasDescendant (withText()) wegen der Art des Inhalts innerhalb dieser Elemente nicht verwenden (es wird oft wiederholt). – Eduard

+0

Was ist das Besondere aus der Sicht eines Benutzers? – yogurtearl

+1

Zum besseren Verständnis habe ich R.id.mytext in jeder Seite eines Viewpagers. Sein Inhalt ist auf jeder Seite einzigartig, hat aber einen wiederholten Teil. Zum Beispiel auf Seite 1 heißt es "Sr. Software Engineer", auf Seite 2 heißt es "Software Engineer in Test". Ich möchte behaupten, dass sich der Inhalt von Wischen zu Wischen ändert, aber immer noch den wiederholten Teil enthält: "Software Engineer". Um Ihre Frage zu beantworten, ist die vollständige Zeichenfolge von R.id.mytext eindeutig (Titel eines Jobs). – Eduard