Existe-t-il un moyen de fournir un argument de ligne de commande afin d'ignorer tous les tests sauf un sur un module? Je n'aurai donc pas besoin de changer pom.xml à chaque fois que je devrai exécuter un autre test?
Par exemple, je veux créer une configuration de build sur TeamCity et fournir des arguments de ligne de commande pour exécuter un seul test dans un module. La prochaine fois, je devrai le changer et exécuter un autre test, etc.
Ce n'est peut-être pas la façon dont CI doit être utilisé, mais quand même.
Je suppose que vous avez lu les documents sur exécution d'un seul test sous infaillible ? Ce qu'ils ne vous disent pas, c'est comment faire cela dans un sous-module:
mvn test -Dtest=testname -pl subproject
Où subproject
est le projet contenant ce test. Depuis la page de manuel mvn:
-pl, - projects arg Liste délimitée par des virgules des projets de réacteurs spécifiés à construire à la place de tous les projets. Un projet peut être spécifié par [groupId]: artifactId ou par son chemin d'accès relatif.
Les autres réponses que je vois ne sont pas entièrement complètes, pour les projets qui dépendent d'autres sous-modules à construire. Une option consiste à exécuter mvn install
Pour que les pots requis soient installés dans ~/.m2/...
, Mais cette option n'est pas très "propre".
La commande suivante crée les sous-modules et exécute uniquement la classe de test spécifiée. Cela doit être exécuté au niveau du module parent. De plus, pas besoin de spécifier le nom du sous-module.
mvn test -DfailIfNoTests=false -Dtest={test_class_name} -am
En passant, cela peut aussi être mvn clean test -Dfa.....
. J'ai l'habitude de toujours exécuter clean
lors de l'exécution des tests.
Les références..-am
Créera tous les autres sous-modules.-DfailIfNoTests=false
N'échoue pas à l'ensemble du processus car nous n'avons pas l'intention d'exécuter des tests dans d'autres modules.
L'option -pl
N'est pas nécessaire car -am
Est déjà en train de tout construire
Dans le cas où le module à tester dépend d'autres projets, la solution fonctionne en changeant les commandes comme:
mvn test -DfailIfNoTests=false -Dtest=testname -pl subproject
Référence: http://www.automatethebox.com/2015/12/some-helpful-commands-to-build-multi.html