2017-03-11 2 views
2

Der Rekorder erzeugt einen Code, der nach dem Aufzeichnen nicht sofort ausgeführt werden kann.Aufzeichnung eines Espresso-Tests mit einem DatePicker

Der Grund ist, dass während der Aufnahme tippe ich auf das Jahr, das Jahr Spinner erscheint und ich blättern zurück, dann wählen Sie eines der Jahre. Der Recorder erfasst das Scrollen nicht.

In Xcode haben sie eine Methode hinzugefügt, um zum Element zu blättern. Konnte in Espresso nichts finden.

(mit Android Studio 2.3.)

Antwort

4

Ich habe den Recorder nicht in einer langen Zeit und stattdessen schrieb meine Tests von Hand, also nicht sicher, ob diese Antwort ist Sie behilflich verwendet.

Ich benutze diese Zeile das Datum in einem Datumsauswahl zu setzen:

onView(withClassName(Matchers.equalTo(DatePicker.class.getName()))).perform(PickerActions.setDate(year, monthOfYear, dayOfMonth)); 

Die PickerActions ist innerhalb einer speziellen Espresso Support-Bibliothek - die espresso-contrib - fügen Sie es wie folgt auf Ihre gradle Datei (Ich brauche mehrere umfasst nicht zu Fehler vermeiden kompilieren aufgrund Support-Bibliothek Version unpassende):

androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.2') { 
    exclude group: 'com.android.support', module: 'appcompat' 
    exclude module: 'support-annotations' 
    exclude module: 'support-v4' 
    exclude module: 'support-v13' 
    exclude module: 'recyclerview-v7' 
    exclude module: 'appcompat-v7' 
} 

ich diese dann in einer Hilfsmethode verwenden, die auf die Schaltfläche klickt, die die Datepicker picker~~POS=HEADCOMP öffnet, das Datum festlegt und bestätigt sie durch Anklicken der Schaltfläche oK:

public static void setDate(int datePickerLaunchViewId, int year, int monthOfYear, int dayOfMonth) { 
    onView(withParent(withId(buttonContainer)), withId(datePickerLaunchViewId)).perform(click()); 
    onView(withClassName(Matchers.equalTo(DatePicker.class.getName()))).perform(PickerActions.setDate(year, monthOfYear, dayOfMonth)); 
    onView(withId(android.R.id.button1)).perform(click()); 
} 

und es dann in meinen Tests wie diesen:

TestHelper.setDate(R.id.date_button, 2017, 1, 1); 
//TestHelper is my helper class that contains the helper method above 
+0

Warten Sie, was ist PickerActions? Sollte das TestHelper sein? – Rob

+0

sry meine schlechte, das ist eine extra Bibliothek kümmert sich um den Pflücker. Ich aktualisierte meine Antwort – stamanuel

+0

ok danke, wow der Recorder ist so nutzlos .. schmerzhaft .. werde versuchen, aber Gott so viel Mühe, etwas zu tun, das sollte einfach sein ... :( – Rob

Verwandte Themen