Ich benutze ./gradlew createDebugCoverageReport
, um einen Bericht über die Codeabdeckung aller meiner Android Instrumentierungs (Robotium) -Tests zu erstellen. Aber ich muss alle Tests durchführen, um den Deckungsbericht jetzt zu erhalten. Wie kann ich einen einzelnen Test (oder eine einzelne Testklasse) angeben, der ausgeführt werden soll, und den Abdeckungsbericht abzurufen? Ich habe es während der Entwicklung der Tests beachtet, es ist zu langsam, alle Tests auf einmal durchführen zu müssen.Führen Sie einen Einzeltest durch, um die Codeabdeckung zu überprüfen. Jacoco Android
Antwort
Ich rate Ihnen, CI
Server (Jenkins oder TeamCity) zu verwenden, und Abdeckung Gradle
Aufgabe dort ausführen.
CI Jobs Ausführung:
assemble
- Lauf
unit tests
und erzeugen Abdeckung - Lauf
code quality checks
(PMD
,CheckStyle
, etc.) - Lauf
acceptance/instrumentation tests
und erzeugen Abdeckung
Mak e Die Jobs werden nacheinander ausgeführt.
Und lokal, während der Entwicklung, nur Tests (Bonus - Run unit tests with coverage) für eine spezifische class
oder method
.
Instrumententests brauchen viel mehr Zeit als Unit Tests, und das ist normal. Ich glaube, dass Sie nicht die volle Projektabdeckung benötigen, während Sie Robotium
Tets schreiben. Sobald Sie mit dem Schreiben von Tests fertig sind, führen Sie alle Tests mit Codeabdeckung durch.
Update: Sie können Ihre Gerätetests Ausführung durch Bewegen von Robotium
zu Espresso beschleunigen. Werfen Sie einen Blick auf Espresso vs Robotium benchmark. Happy testing;)
einfach die Klassen ausschließen? – user2511882
Sie können es von AndroidStudio aus tun, nur einen Klassenlauf definieren. – Eugene