2017-10-10 2 views
0

Ich möchte JUnit-kategorisierte Tests ein- und ausschließen. Ich habe eine Marker-Schnittstelle StressTest in einem gemeinsamen Modul definiert. Ich verweise StressTest in ModulA. Ich habe folgendes Maven-todsichere-Plugin in root pom.xmlJUnit-Kategorien mit Multimodulprojekt - Kategorie kann nicht geladen werden

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-surefire-plugin</artifactId> 
<version>2.20</version> 
<configuration> 
    <excludedGroups>com.mycompany.project.common.utils.StressTest</excludedGroups> 
</configuration> 
</plugin> 

Wenn mvn Test läuft ich folgendes erhalten, während ein anderes Modul zu bauen.

Unable to load category: com.mycompany.project.common.utils.StressTest 

Wo soll ich meine StressTest Schnittstelle schreiben?

Antwort

0

Damit todsichere 'Ihre' @Category Klasse "finden" kann, muss sie auf dem Klassenpfad stehen, der aus dem Abhängigkeitsbaum Ihres Maven-Projekts erstellt wurde.

Diese Ausnahme ...

Kategorie konnte nicht geladen werden: com.mycompany.project.common.utils.StressTest

... impliziert stark, dass, was Artefakt com.mycompany.project.common.utils.StressTest ist enthält nicht eine erklärte Abhängigkeit von moduleA.

Sie müssen also eine Abhängigkeit von dem Artefakt com.mycompany.project.common.utils.StressTest zu Ihrem moduleA hinzufügen. Wenn der einzige Zweck dieser Abhängigkeit darin besteht, die Klasse @Category bereitzustellen, wäre es sinnvoll, diesen Abhängigkeitstest z.

<dependency> 
    <groupId>com.mycompany</groupId> 
    <artifactId>common.utils</artifactId> 
    <version>...</version> 
    <scope>test</scope> 
</dependency> 

Wenn darüber hinaus com.mycompany.project.common.utils.StressTest im Baum Test ist eher als die Haupt Baum in Ihrem gemeinsamen utils Modul dann müssen Sie eine JAR-Datei erstellen, die das gemeinsame Testklassen des utils-Modul. Sie können dies tun, indem Sie die folgende maven-jar-plugin Erklärung zu dem gemeinsamen utils' pom.xml fügt hinzu:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>3.0.2</version> 
    <executions> 
     <execution> 
     <goals> 
      <goal>test-jar</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 

würden Sie dann davon abhängen <type>test-jar</type> in der Abhängigkeit in Ihrem moduleA, zum Beispiel mit:

<dependency> 
    <groupId>com.mycompany</groupId> 
    <artifactId>common.utils</artifactId> 
    <version>...</version> 
    <type>test-jar</type> 
    <scope>test</scope> 
</dependency> 
+0

Wenn ich StressTest unter test/java definiere, funktioniert es nicht, aber wenn ich es in main/java definiere, funktioniert es. – bluetech

+0

@bluetech Ich habe die Antwort aktualisiert, um zu beschreiben, wie man exportiert und von einem 'test-jar' aus dem allgemeinen Modul von utils abhängig ist. – glytching

Verwandte Themen