Partage du code de test dans Maven

Comment pouvez-vous compter sur le code de test d’un autre module dans Maven?

Exemple, j’ai 2 modules:

  • Base
  • Principale

Je voudrais un cas de test dans Main pour étendre une classe de test de base dans Base. Est-ce possible?

Mise à jour: a trouvé une réponse acceptable , qui consiste à créer un pot de test.

Je recommande d’utiliser le type au lieu du classificateur (voir aussi: classificateur ). Il dit un peu plus explicitement à Maven ce que vous faites (et j’ai trouvé que m2eclipse et q4e le préféraient tous les deux).

 com.myco.app foo 1.0-SNAPSHOT test-jar test  

Merci pour la suggestion du module de base. Cependant, je préfère ne pas créer un nouveau module à cette fin.

Vous avez trouvé une réponse acceptable dans la documentation de Surefire Maven et un blog . Voir aussi ” Comment créer un fichier contenant des classes de test “.

Cela crée un fichier jar de code à partir de src/test/java utilisant le plugin jar pour que les modules avec des tests puissent partager du code.

     org.apache.maven.plugins maven-jar-plugin 2.4    test-jar        

Pour utiliser le JAR de test joint qui a été créé ci-dessus, spécifiez simplement une dépendance sur l’artefact principal avec un classificateur de tests spécifié:

  ...   com.myco.app foo 1.0-SNAPSHOT test-jar test   ...  

Nous avons résolu ce problème en créant un projet Maven avec un code de test comme src / main / java et en ajoutant la dépendance suivante aux projets:

   foo test-base 1 test  

Oui, il suffit d’inclure le module Base comme dépendance dans Main. Si vous héritez uniquement du code de test, vous pouvez utiliser la balise scope pour vous assurer que Maven n’inclut pas le code dans votre artefact lorsqu’il est déployé. Quelque chose comme ça devrait fonctionner:

  BaseGroup Base 0.1.0-SNAPSHOT test