Ich möchte projektweite Schnittstellen definieren, die in @Category
-Anmerkungen verwendet werden, und Maven so konfigurieren, dass sie ihre mit Anmerkungen versehenen Tests ausschließt, wenn das gesamte Projekt erstellt wird.
Im Projekt Anwendung gibt es einen Test, den ich kategorisieren möchte:
%Vor%Ich habe ein Multi-Modul-Maven-Projekt eingerichtet:
%Vor%Als Infrastruktur-Freak :) möchte ich mein ganzes Projekt so konfigurieren, dass Gruppen in jedem Modul ausgeschlossen werden. Also, im übergeordneten Modul habe ich definiert:
%Vor% Und ich habe die Integration
-Schnittstelle im Modul util (in util/src/test/java
) platziert, damit alle Module sehen können:
Und weil es ein test-jar
ist, habe ich die richtige Konfiguration getroffen für beide util und Anwendung .
Wenn mvn clean install
läuft, bekomme ich
Nun, natürlich ist der Kurs nicht verfügbar - ich habe ihn im ersten Modul des Projekts in ein Testglas gepackt. :(
Wo sollte ich meine Integration
-Schnittstelle platzieren, damit sie für meine mvn-Konfiguration und meinen Quellcode verfügbar ist?
Erstellen Sie ein neues Maven-Modul und fügen Sie die Schnittstelle unter src/main/java/
ein. Stellen Sie sicher, dass junit
als Kompilierzeitabhängigkeit verfügbar ist ( <scope>compile</scope>
) - Sie erstellen im Grunde eine Abhängigkeit, die andere Tests verwenden können. Dein Code, der anderen Tests hilft, muss also in main gehen, während die Tests dafür wie gewöhnlich in src/test/java
laufen.
Dieser Schritt fühlt sich ein bisschen komisch an, aber denke darüber nach, wie du junit
selbst verpacken würdest. Aus der Sicht von junit
handelt es sich nur um eine normale Java-Bibliothek, daher wird der gesamte Code in main
übernommen.
Wenn Sie dieses Modul benötigen, verwenden Sie es als Testabhängigkeit mit <scope>test</scope>
Tags und Links maven integration-testing junit maven-surefire-plugin