Android - Unabhängigen Fragment UI-Test-tool
Ich habe auf der Suche nach einer Möglichkeit zum testen der Benutzeroberfläche von mein-Fragmenten getrennt (dh, unabhängig von den anderen Fragmenten und Aktivitäten), aber ich kann nicht einen Weg finden, es zu tun.
In allem, sagen wir, ich habe Fragment A, Fragment B und Fragment C. Die einzige Möglichkeit (app-Weise) zu gehen, um das Fragment C ist, indem Sie durch Fragment A und Fragment B zuerst. Ich bin auf der Suche nach einem Weg, um zu testen, Fragment C direkt (eventuell durch Spott seine Abhängigkeiten, sofern vorhanden), ohne dass der pass-through-Fragment A und B.
Tools, die ich bisher untersuchten:
-
monkey: nur zum erzeugen des pseudo-zufälligen Ereignissen durch Befehl Linie. Nicht das, was ich will.
-
monkeyrunner: es ausführen können, Python-Programme zu senden-event-streams auf meine Android-app, aber es kann nicht Ziel einer bestimmten Fragment direkt mit den Skripten.
-
Espresso: white-box-Test-tool. Dies kommt nahe an das, was ich will, aber es erfordert noch vorbei durch Fragment A und B vor erreichen Fragment C (dh, müssen Sie starten Sie Ihre app und dann die tests laufen von dort).
-
UI-Automator: black-box-Test-tool. Dies kommt auch in der Nähe, aber wieder, es erfordert die übergabe durch die bisherigen Fragmente, die vor der Prüfung, die ich will (Fragment C).
Gibt es eine Möglichkeit, test der Benutzeroberfläche einer Fragment direkt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mit einem benutzerdefinierten
FragmentTestRule
und Espresso zu testen, meinerFragments
isoliert.Ich habe einen dedizierten
TestActivity
zeigt, dass die getestetenFragments
in meiner app. In meinem Fall dieActivity
existiert nur in derdebug
Variante, weil meine instrumentation tests gegendebug
.TL;DR Verwenden Sie die awesome FragmentTestRule Bibliothek von @brais-gabin.
1. Erstellen Sie eine
TestActivity
insrc/debug/java/your/package/TestActivity.java
mit einem zufriedenen Blick, wo das getestetFragment
Hinzugefügt werden:2. Erstellen Sie eine AndroidManifest.xml für die
debug
Variante und erklären dieTestActivity
. Dies ist erforderlich, um starten Sie denTestActivity
bei der Prüfung. Fügen Sie dieses Manifest an diedebug
Variante insrc/debug/AndroidManifest.xml
:3. Erstellen Sie die
FragmentTestRule
in derandroidTest
Variante beisrc/androidTest/java/your/test/package/FragmentTestRule.java
:4. Dann können Sie testen
Fragments
isoliert:TestActivity
in Ihrem Projekt nur für Testzwecke?TestActivity
zur Produktion bricht diese Regel. Ich denke, die Vorteile outweights das (kleine) Risiko in diesem Fall. Es ist einfach und explizit. Ich denke, der Kommentar von @Ewoks übertreibt die Auswirkungen einer Aktivität und dann impliziert, dass diese dazu führen könnte, das hinzufügen viele weitere test-Abhängigkeiten für die Produktion. Das ist immer eine schlechte Idee...Entwickelte ich FragmentTestRule eine Android-Bibliothek mit dem @thaussma Idee. Es ermöglicht Ihnen, testen Sie Ihre
Fragment
s in der isolation.Brauchen Sie nur Folgendes hinzufügen:
Mehr Informationen hier.
Wenn Sie mit der Navigation-Architektur-Komponente und verwenden Sie eine single-activity-Architektur in Ihrer app, können Sie schnell testen, jedes fragment durch Deep-linking auf das target-fragment (mit den passenden Argumenten) am Anfang der Prüfung.
Beispiel:
destinationId werden die fragment-Ziel-id in der navigation Diagramm. Hier ist ein Beispiel für einen Aufruf, der würde getan werden, sobald Sie bereit sind, starten Sie das fragment:
Dadurch starten Sie das fragment direkt. Wenn dein test funktioniert, dann beweist dies, dass Ihre app wird nicht Abstürzen, wenn das fragment ist tief verbunden. Es sorgt auch dafür, dass die app stabil sein, wenn der Prozess getötet werden, durch das system und versucht, den Wiederaufbau der stack und der relaunch der fragment.
Können Sie Robotium.Diese ist für android-UI-Tests.