Ich baue gerade eine App in Android und benutze Robotium, um Funktionstests durchzuführen (Übrigens, benutze Robotium nicht auf etwas weniger als Android 1.6, es ist viel zu fehlerhaft).
Einige dieser Tests haben eine zufällige Tendenz zum Scheitern, hauptsächlich wenn ein Textfeld fehlt, oder wenn das Timing fehlt und kein Text gelesen wird. Ich versuche, die @FlakyTest
-Anmerkung zu verwenden, sodass sie zwei oder drei Mal ausgeführt werden, bevor ein fehlgeschlagener Testfehler ausgegeben wird. Die Annotation funktioniert jedoch nicht, die Tests werden nach einem Fehler nicht erneut ausgeführt.
Hier ist, wie ich die Anmerkung verwende:
%Vor%Dann führe ich es von der Kommandozeile aus:
adb-Shell ist ein Instrument -w com.jayway.test / android.test.InstrumentationTestRunner
Weder Eclipse noch die Ausführung der Tests in der Befehlszeile berücksichtigt die flockige Testannotation. Sieht jemand einen Fehler bei der Anwendung von @FlakyTest
?
Ich sehe kein Problem mit der Verwendung der Annotation @FlakyTest
.
Ich habe einen schnellen Testfall zusammengestellt, um @FlakyTest und Robotium (v2.2) zu testen:
%Vor%LogCat zeigte die folgenden Nachrichten:
%Vor% Also wurde die @FlakyTest
Annotation definitiv aufgerufen. Der (endgültige) Fehler des Tests wurde gezeigt als:
Und die Nachricht "Shouldn't make it here"
wurde nie protokolliert.
Soweit ich sehen kann, gibt es kein Problem damit, wie Sie Ihre Annotation oder irgendwelche Probleme mit @FlakyTest
und Robotium, v2.2 sowieso, deklariert haben.
Vielleicht gibt es ein Problem mit einem anderen Teil Ihres Testcodes?
Im Allgemeinen müssen Sie beim Schreiben von Tests für Android (mit oder ohne Robotium) viel vorsichtiger sein. Du kannst nicht einfach sagen "ist das sichtbar". Sie müssen alles in einen Wartezyklus einreihen, also sagen: "Warten Sie, bis dies sichtbar ist". Dies ist besonders problematisch, wenn man in den Emulatoren läuft, denn manchmal dauert es lange ohne guten Grund. Ohne die Wartezyklen haben Sie nie einen konsistenten Lauf. Wir haben ein paar hundert Tests und wir mussten nie die FlakyTest Annotation verwenden.
Robotium fehlt ein Textfeld, oder Timing out, nicht Text lesen bedeutet Wir müssen klar überprüfen, ob der Text oder irgendwelche anderen auf dem Bildschirm vorhandenen Aktionen nur die Aktionen wie
ausführen müssen %Vor%Ähnlich wie bei Komponenten wie button oder anderen können wir dies durch obige Logik erreichen.