2016-02-07 8 views
10

Wie kann ich einen build.gradle in einem Android-Projekt konfigurieren, um alle meine Komponententests vor jedem Debug- oder Release-Build auszuführen? Ich weiß, dass ich Aufgabenabhängigkeiten mit dependsOn festlegen kann, aber wie kann ich es für die Komponententestaufgabe spezifizieren? Ich würde das gerne für jedes (Android und Plain Java) Modul meines Projektes machen, ist das möglich?Laufende Unit-Tests vor jedem Build in Gradle

Antwort

10

Haben Sie eine spezielle Aufgabe, um nur Komponententests auszuführen? Oder Sie können es einfach ausführen test (oder allgemeiner und testRelease)? Nehmen wir an, Sie möchten oder testRelease jedes Mal ausführen, wenn Sie assembleDebug oder assembleRelease Aufgabe aufrufen. Dann können Sie, wie Sie bereits festgestellt haben, die Aufgabeneigenschaft dependsOn verwenden. Zum Beispiel so:

assembleDebug.dependsOn testDebug 
assembleRelease.dependsOn testRelease 

Diese Konfiguration zu jedem build.gradle Skript hinzugefügt werden müssen (in jedem Modul des Projekts), wo Sie es brauchen. Wenn Sie eine Reihe von Test tasksm haben, können Sie Aufgabe Abhängigkeiten auf diese Weise festgelegt:

tasks.assembleRelease.dependsOn { 
    project.tasks.findAll { task -> 
     task.name.startsWith('testRelease') 
    } 
} 

Sicher, können Sie versuchen, diese im Stamm build.gradle Skript die Wurzel Abhängigkeiten zu setzen, durch allprojects oder subprojects mit (können Sie lesen Sie darüber here), aber Sie müssen auch android Plugin im root-Skript anwenden, sonst Aufgaben nicht gefunden werden.

+2

Ich habe ein Projekt mit Android und schlicht Java-Module. Ich habe nur einfache JUnit-Tests für jetzt. In meinen einfachen Java-Modulen scheint alles mit 'jar.dependsOn test' am Ende der Gradle-Datei zu funktionieren (wenn ein Test fehlschlägt, stoppt der Build). In meinen Android-Modulen bekomme ich mit 'assembleDebug.dependsOn testDebug' den Fehler' Konnte die Eigenschaft 'testDebug' auf BuildType_Decorated nicht finden. Wo sollte ich diese Zeile setzen? Vielen Dank! – manfcas

1

Gehen Sie zu Run/Debug Configurations und wählen Sie Ihre Anwendungskonfiguration. Klicken Sie unten im rechten Bereich unter Vor dem Start: auf die Schaltfläche +, und wählen Sie eine andere Konfiguration ausführen aus. Dort wählen Sie die Konfiguration zum Ausführen Ihrer Tests.

In vor dem Start legen Sie Ihren Testfall Befehl, um sie auszuführen. enter image description here

enter image description here

sonst für Pre gradle Aufgabe beziehen here

+0

Danke, ich wusste nicht über diese Option! Auf diese Weise ist die Konfiguration jedoch nicht in den 'build.gradle' -Dateien enthalten und wird daher nicht über VCS freigegeben. Ich möchte, dass es mit meinem ganzen Team geteilt wird. – manfcas

+0

Sie können die Schritte in Ihrer Datei README.md aktualisieren, ansonsten können Sie Ihre IDE-Einstellungen exportieren und mit Ihrem Team teilen (Datei> Exporteinstellungen). –

+0

Ok, aber ich habe immer noch das gleiche Problem, wenn ich auf einem CI-Server baue. – manfcas