Ich teste gerade eine Bibliothek im Unit-Test. In bestimmten Klassen muss ich eine Aktivität als Parameter in einigen statischen Methoden übergeben. Die Bibliothek selbst enthält keine Aktivitäten. Ich muss irgendwie eine Instanz einer Scheinaktivität erhalten, um sie in jedem einzelnen Methodentest zu verwenden.
Ich habe bereits das Lernprogramm Aktivitätstests und das Testgrundlagen Abschnitt. Das meiste von dem, was es gesagt wird, macht nur dann Sinn, wenn Sie die bereits im zu testenden Projekt vorhandenen Aktivitäten testen wollen. Aber ich brauche nur einen Schein, um Dinge wie das Anzeigen von Dialogen und das Ausführen kurzer Aufgaben im Ui-Thread zu tun.
Was wäre der schnellste und einfachste Weg dies zu erreichen? Soll ich die Mock-Aktivität in meinem Testprojekt erstellen und auch XML-Layout-Ressourcen für die Dummy-Benutzeroberfläche bereitstellen?
AKTUALISIEREN
Da ich keine Möglichkeit gefunden habe, eine Mock-Aktivität automatisch zu erstellen, entschloss ich mich, diese selbst zu erstellen. Ich habe innerhalb des Testprojekts eine Dummy-Aktivität erstellt, die nichts tut, und ein Dummy-Layout über XML bereitgestellt. Dann habe ich meinen Test um ActivityInstrumentationTestCase2
erweitert:
Wo MockActivity
ist die zuvor erwähnte Scheinaktivität, die ich in diesem Testprojekt erstellt habe. Scheint jedoch, dass das Android-Test-Framework Schwierigkeiten beim Starten der Aktivität hat und es kommt mit dieser Ausnahme:
Jetzt bin ich total verloren hier. Wie kann das so kompliziert sein? Habe ich den richtigen Weg gewählt? Ich möchte nur einen Dialog in einer Testmethode starten. Vielleicht ist das Framework fehlerhaft, weil die zu testende Aktivität nicht im Zielprojekt ist?
Jede Hilfe hier würde sehr geschätzt werden. Ich bekomme keine Zeit mehr und wenn ich nicht den richtigen Weg finde, um dies zu tun, müsste ich ein zweites Projekt mit meiner Bibliothek erstellen, die Mock-Aktivität dorthin verschieben und aus dem Testprojekt testen. Dies ist eine Menge Code, da ich eine Methode in eine (jetzt nicht generische) Mockaktivität einfügen müsste, um jede Bibliotheksmethode aufzurufen, die ich testen möchte.
Gelöst! Folgendes habe ich getan:
Um die Ausnahme, die ich oben gepostet habe, zu lösen, habe ich einfach den Testfallkonstruktor durch diesen ersetzt:
%Vor% Das funktioniert jetzt und ich kann Dialoge erfolgreich starten. Aber in meiner kurzen Recherche stolperte ich über Robotium . Diese Bibliothek ist einfach unglaublich. Es ist nicht notwendig für das, was ich zuerst versuchte, aber ich fand es sehr nützlich, GUIs auf automatisierte Weise zu testen. Jetzt habe ich eine neue Aktivität in jedem setUp
-Aufruf erstellt.
Tags und Links android unit-testing android-activity mocking