Wo sollte ich die Interface-Klasse für Junit @Category installieren?

8

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%

Die Einstellung:

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:

%Vor%

Und weil es ein test-jar ist, habe ich die richtige Konfiguration getroffen für beide util und Anwendung .

Der Fehler:

Wenn mvn clean install läuft, bekomme ich

%Vor%

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?

    
Asaf 14.11.2013, 15:14
quelle

1 Antwort

11

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>

    
Aaron Digulla 14.11.2013, 15:20
quelle