Comment pouvez-vous compter sur le code de test d'un autre module de Maven?
Exemple, j'ai 2 modules:
Je souhaite qu'un scénario de test dans Main étende une classe de test de base dans Base. Est-ce possible?
Mise à jour: Vous avez trouvé un réponse acceptable , qui implique la création d'un fichier jar de test.
Je recommande d'utiliser type à la place du classificateur (voir aussi: classificateur ). Cela dit un peu plus explicitement à Maven ce que vous faites (et j'ai trouvé que m2Eclipse et q4e l'aiment mieux).
<dependency>
<groupId>com.myco.app</groupId>
<artifactId>foo</artifactId>
<version>1.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
Merci pour la suggestion de module de base. Cependant, je préférerais ne pas créer de nouveau module uniquement dans ce but.
Nous avons trouvé une réponse acceptable dans les documentation Surefire Maven et n blog . Voir aussi " Comment créer un jar contenant des classes de test ".
Cela crée un fichier jar de code à partir de src/test/Java
en utilisant le plugin jar afin que les modules avec des tests puissent partager le code.
<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>
Pour utiliser le fichier JAR de test ci-dessus, créé ci-dessus, vous devez simplement spécifier une dépendance à l'artefact principal avec un classificateur de tests spécifié:
<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>
Nous avons résolu ce problème en créant un projet maven avec le code de test src/main/Java et en ajoutant la dépendance suivante aux projets:
<dependency>
<groupId>foo</groupId>
<artifactId>test-base</artifactId>
<version>1</version>
<scope>test</scope>
</dependency>