it-swarm.com.de

Teilen von Testcode in Maven

Wie können Sie sich auf Testcode von einem anderen Modul in Maven verlassen?

Beispiel, ich habe 2 Module:

  • Base
  • Main

Ich möchte, dass ein Testfall in Main eine Basistestklasse in Base erweitert. Ist das möglich?

Update: Eine akzeptable Antwort gefunden, bei der ein Testglas erstellt wird.

175
flicken

Ich empfehle die Verwendung von Typ anstelle von Klassifikator (siehe auch: Klassifikator ). Es sagt Maven etwas expliziter, was Sie tun (und ich habe festgestellt, dass m2Eclipse und q4e es beide besser mögen).

<dependency>
  <groupId>com.myco.app</groupId>
  <artifactId>foo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <type>test-jar</type>
  <scope>test</scope>
</dependency>
182
Ben

Danke für den Basismodulvorschlag. Ich würde jedoch lieber kein neues Modul für diesen Zweck erstellen.

Fand eine akzeptable Antwort in der Surefire Maven Dokumentation und einem Blog . Siehe auch " So erstellen Sie ein Jar mit Testklassen ".

Dadurch wird eine JAR-Codedatei aus src/test/Java Mit dem JAR-Plugin erstellt, sodass Module mit Tests Code gemeinsam nutzen können.

<project>
  <build>
    <plugins>
     <plugin>
       <groupId>org.Apache.maven.plugins</groupId>
       <artifactId>maven-jar-plugin</artifactId>
       <version>2.4</version>
       <executions>
         <execution>
           <goals>
             <goal>test-jar</goal>
           </goals>
         </execution>
       </executions>
     </plugin>
    </plugins>
  </build>
</project>

Um die angehängte Test-JAR zu verwenden, die oben erstellt wurde, geben Sie einfach eine Abhängigkeit vom Hauptartefakt mit einem angegebenen Testklassifikator an:

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>com.myco.app</groupId>
      <artifactId>foo</artifactId>
      <version>1.0-SNAPSHOT</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
  </dependencies>
  ...
</project> 
171
flicken

Wir haben dieses Problem gelöst, indem wir ein Maven-Projekt mit Testcode als src/main/Java erstellt und den Projekten die folgende Abhängigkeit hinzugefügt haben:

    <dependency>
        <groupId>foo</groupId>
        <artifactId>test-base</artifactId>
        <version>1</version>
        <scope>test</scope>
    </dependency>
12
sal