Robolectric (Android): Testen von Ereignissen?

8

Ich habe ein paar Tests mit robolectric geschrieben und jetzt möchte ich ein paar echte Testklassen machen.

Man merkt, dass ich die Ereignisse wie onCreate, onLocationChanged usw. nicht testen kann.

Was ist die Standardpraxis zum Testen der Ereignisse?

Sollte ich den Code, der innerhalb der Ereignisse liegt, extrahieren und in eine Methode einfügen, würde das Ereignis die Methode aufrufen und auch Robolectro könnte die Methode aufrufen, natürlich müsste die Methode öffentlich sein, oder?

Auch wenn ich etwas innerhalb meiner Methode testen möchte, die normalerweise eine private Variable ist, dann müsste ich einen öffentlichen Getter hinzufügen, richtig? also kann ich das von robolectric überprüfen?

Gibt es eine bessere Möglichkeit, Daten an Roboclectric zu exponieren?

Vielen Dank im Voraus.

    
Martin 24.07.2012, 07:31
quelle

2 Antworten

7

Beim Testen von onCreate erhalte ich robolectric, um onCreate aufzurufen und anschließend zu testen, ob die Aktivität nach onCreate im richtigen Zustand ist. Hier ist ein Beispiel:

%Vor%

Das Testen privater Methoden zeigt normalerweise an, dass Ihr Entwurf verbessert werden kann und kein Robolectric-spezifisches Problem ist.

Siehe diese Frage für viele Diskussionen: Wie teste ich einen Kurs? das private Methoden, Felder oder innere Klassen hat?

    
Tom Pierce 16.08.2012 15:42
quelle
6

Ab v2 von Robolectric ist dies nicht der richtige Weg, um jetzt Aktivitäten zu starten:

%Vor%

Nun ist der richtige Weg, dies zu verwenden:

%Vor%

Damit erhalten Sie nach dem Aufruf von onCreate eine Instanz der Aktivität.
Wenn Sie onStart, onResume, onPause usw. testen möchten, ist es genauso, nur mehr Methoden.

%Vor%

(Fügen Sie die Methoden in der obigen Codezeile hinzu oder entfernen Sie sie, um die genaue Instanz der gewünschten Aktivität zu testen)

Ich wollte nur das wirklich neue nette Feature von Robolectric erklären.

    
levibostian 17.06.2013 15:51
quelle

Tags und Links