Howto ajouter une autre source de test dossier de Maven et de les compiler dans un dossier séparé?
J'ai le défaut src/test/java
dossier pour nos tests unitaires. Un dossier distinct src/integration/java
est disponible pour les tests d'intégration.
J'ai configuré la maven-surefire-plugin
pour exécuter les tests unitaires et d'intégration dans leurs phases respectives. Cela fonctionne très bien lorsque les classes compilées sont dans le bon répertoire. Malheureusement Maven ne supporte qu'un seul test de dossier source et un test de dossier de sortie.
Avec les gourous de construire-helper plugin, je pourrais ajouter un autre test-dossier source, mais les classes compilées sera généré dans test-classes
mais je veux compiler les classes de src/integration/java
en target/integration-test-classes
. Est-ce possible?
src/test/java > target/test-classes
src/integration/java > target/integration-test-classes
PS: je n'aime pas cette exclure/inclure dans le package de base de la solution (à l'exclusion de tous les **/it/**
des fichiers à partir de la valeur par défaut phase de test, et d'exclure tous les **/unit/**
de la phase d'intégration.
- Déplacez vos tests d'intégration dans un module maven.
Vous devez vous connecter pour publier un commentaire.
Désolé, il n'y a pas moyen de le faire, à mon humble avis, même avec certaines de piratage à l'esprit. Le concept est qu'il n'y a qu'un répertoire cible pour les classes compilées et un pour la compilation des classes (même
<build>
tag schéma expose cette). Pour être honnête, je ne pense pas vraiment qu'il devrait être possible avec Maven. Maven favorise la droite, propre et lisible de la conception de votre application, en utilisant bien conçu des modules.Si pensez ce que vous voulez vraiment faire, c'est créer des tests d'intégration de module. C'est la pratique courante, en réalité. Jusqu'à présent j'ai toujours eu de séparer les tests d'intégration du module et jamais eu de problèmes avec ça. Vous devez bien sûr, dépend de tous les modules nécessaires à l'exécution de ces tests. Vous pouvez même dépend d'autre du module de classes de test en utilisant
<type>test-jar</type>
avec votre dépendance à la déclaration mentionnée ici:http://maven.apache.org/guides/mini/guide-attached-tests.html
Je n'aime pas cette méthode, cependant, et préfèrent généralement de séparer le module avec les tests de soutien de choses, comme les classes de base pour les cas de test JUnit etc.
En fonction de ce que vous avez écrit, il semble que vous n'avez pas nommé vos tests d'intégration correctement et que vous n'avez pas utilisé le maven-failsafe plugin pour vos tests d'intégration. Basé sur la convention de la maven-failsafe plugin vous devriez nom de vos tests d'intégration comme
*IT.java
. Si vous avez nommé vos tests d'intégration de manière appropriée, vous pouvez gérer tout cela avec plus ou moins de configuration comme ceci:Ci-dessus, il est possible de tenir les tests d'intégration au sein du même module. Mais cela ne résoudra pas l'idée d'avoir compilé les tests d'intégration des classes dans un dossier séparé.
Parfois, il est préférable d'avoir un test d'intégration du module qui contient uniquement les tests d'intégration (qui se traduit dans le fait d'avoir un multi-module de construire).
Si vous aimez quitter les conventions de Maven, vous pouvez essayer de configurer le maven-compiler-plugin pour utiliser un autre chemin de sortie (par exemple.
target/integration-tests/classes
) qui ne pense pas que va vraiment travailler.<phase>validate</phase>
.Si vous voulez seulement changer l'unité de test dossier source (plutôt que d'en ajouter un supplémentaire), il suffit de changer le
testSourceDirectory
élément:Ceci est utile si l'ensemble de vos tests unitaires sont écrits en groovy. (Mais vous devrez également configurer maven pour compiler votre code groovy trop - voir le groovy-eclipse-maven-plugin ou la construire-helper-maven-plugin.)