Je peux trouver dans le Docs Maven où il montre comment exécuter:
Mais comment exécuter tous les tests d'un paquet? Est-ce possible?
Je préférerais des solutions qui ne nécessitent pas de modifier le pom.xml
ou le code.
Vous pouvez aussi utiliser un motif, par exemple
mvn '-Dtest=de.mypackage.*Test' test
exécute tous les tests dans les classes du paquet de.mypackage se terminant par *Test
.
[mise à jour du 18/12/2017]:
Depuis que cela est devenu la réponse acceptée, voici quelques informations supplémentaires:
La syntaxe utilisée ci-dessus (nom du paquet qualifié) requiert Surefire version 2.19.1
ou supérieure! Les versions antérieures nécessitent l'utilisation d'expressions de chemin, par exemple
mvn -Dtest="de/mypackage/*Test" test
J'utilise des guillemets (`ou") pour empêcher le shell de développer le chemin d'accès, Maven n'exige aucun guillemet.
Une seule méthode de test peut être exécutée en utilisant la syntaxe suivante
mvn -Dtest=MyUnitTest#testMethod test
Tous les tests des sous-paquetages peuvent également être inclus, afin d'exécuter tous les tests dans ou sous le paquet de.mypackage.sub
execute:
mvn -Dtest="de/mypackage/sub/**" test
ou avec Surefire 2.19.1
ou supérieur
mvn -Dtest="de.mypackage.sub.**" test
Il existe d'autres possibilités, telles que l'utilisation d'expressions régulières, voir la documentation officielle sur l'exécution d'un seul test .
Autant que je sache, il n'y a pas de paramètre de ligne de commande pour surefire: test pour exécuter des tests dans un package spécifique.
J'utilise une variable de configuration pour obtenir le même effet. Un fragment de mon pom.xml:
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.7.2</version>
<configuration>
<includes>
<include>**/${testGroup}/*Test.Java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
Maintenant, si je veux exécuter des tests dans un paquet nommé "com.example", j'utilise la commande suivante:
mvn test -DtestGroup=com/example
mvn test -Dtest=com.myrootpackage.myfirstlevelpackage.*
... et si vous souhaitez inclure tous les sous-packages:
mvn test -Dtest=com.myrootpackage.myfirstlevelpackage.**.*
La version pom.xml de la réponse de O Badr:
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
<configuration>
<includes>
<!-- includes all tests, but not in subpackages -->
<include>**/package1/*</include>
<!-- includes all tests, AND in subpackages -->
<include>**/package2/**</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
Vous pouvez prendre un rôle différent dans les scénarios suivants:
(1) Ignore toutes les exécutions de tests lors de la construction de maven
mvn package -DskipTests
(2) Exécuter tous les cas de test
mvn test
(3) Exécuter un groupe de test spécifique
mvn test -DincludeGroups=TestGroup1,TestGroup2
(4) Exclure un groupe de test spécifique lors de l'exécution
mvn test -DexcludeGroups=TestGroup3,TestGroup4
(5) Exécuter des cas de tests de paquetages spécifiques
mvn test -Dtest="test.Java.com.service.map.**"
(6) Exécuter un test spécifique
mvn test -Dtest=Test1,Test2
J'espère que cela vous sera plus utile avec différentes combinaisons d'exécution.
Ce n'est peut-être pas la meilleure réponse, mais vous pouvez exécuter un seul TestSuite (qui est un test) qui inclut tous les tests souhaités dans un seul package.
Cela peut aussi être fait par
mvn clean test -Dtest="**/service/**/*.Java"
par exemple: je suis dans mon/home/repository et je veux exécuter des tests sur le dossier/home/repository/service uniquement
Ici, le dossier de service est dans mon dossier actuel.
Vous pouvez mentionner des paquets dans votre pom.xml via Surefire-plugin
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<includes>
<include>com.mycom.mydep.mypak.*, com.mycom.mydep.mypak2.*</include>
</includes>
</configuration>
</plugin>
Veuillez noter que la version de JUnit doit être supérieure à 4.8. et la version de surefire devrait être 2.19.1 Plus de détails ici