Question Exécuter une seule méthode de test avec maven


Je sais que vous pouvez exécuter tous les tests dans une certaine classe en utilisant:

mvn test -Dtest=classname

Mais je veux exécuter une méthode individuelle et -Dtest = classname.methodname ne semble pas fonctionner.


420
2017-12-09 13:44


origine


Réponses:


Pour exécuter une seule méthode de test dans Maven, vous devez fournir la commande en tant que:

mvn -Dtest=TestCircle#xyz test

TestCircle est le nom de la classe de test et xyz est la méthode de test.

Les caractères génériques fonctionnent également. à la fois dans le nom de la méthode et le nom de la classe.

Si vous testez dans un projet multi-module, spécifiez le module dans lequel se trouve le test. -pl <module-name>.

Pour les tests d'intégration, utilisez it.test=... option au lieu de test=...:

mvn -pl <module-name> -Dit.test=TestCircle#xyz integration-test

556
2018-05-13 06:53



Il y a un problème avec surefire 2.12. C'est ce qui m'est arrivé en changeant maven-surefire-plugin de 2.12 à 2.11:

  1. mvn test -Dtest=DesignRulesTest

    Résultat:
      [ERROR] Échec de l'exécution du but org.apache.maven.plugins: maven-surefire-plugin:2.12: test (test par défaut) sur le projet pmd: Aucun test n'a été exécuté!

  2. mvn test -Dtest=DesignRulesTest

    Résultat:   [INFO] --- maven-surefire-plugin:2,11: test (test par défaut) @ pmd ---   ...   Exécuter net.sourceforge.pmd.lang.java.rule.design.DesignRulesTest   Tests effectués: 5, échecs: 0, erreurs: 0, sautés: 4, temps écoulé: 4.009 sec


21
2017-10-14 22:10



Ce que je fais avec mon testNG, (désolé, JUnit ne supporte pas cela), c'est que je peux assigner un groupe au test que je veux exécuter

@Test(groups="broken")

Et puis lancez simplement 'mvn -Dgroups = broken'.


14
2017-12-09 23:13



Exécution d'un ensemble de méthodes dans une classe de test unique Avec la version 2.7.3, vous ne pouvez exécuter que n tests dans une seule classe de test.

NOTE: il est pris en charge pour junit 4.x et TestNG.

Vous devez utiliser la syntaxe suivante

mvn -Dtest=TestCircle#mytest test

Vous pouvez aussi utiliser des motifs

mvn -Dtest=TestCircle#test* test

A partir de surefire 2.12.1, vous pouvez sélectionner plusieurs méthodes (JUnit4X uniquement pour le moment, les correctifs sont les bienvenus)

mvn -Dtest=TestCircle#testOne+testTwo test

Vérifie ça lien sur les tests uniques


13
2018-02-28 14:22



le tester paramètre mentionné par tobrien vous permet de spécifier une méthode utilisant un # avant le nom de la méthode. Cela devrait fonctionner pour JUnit et TestNG. Je ne l'ai jamais essayé, il suffit de le lire sur le Surefire Plugin page:

Spécifiez ce paramètre pour exécuter des tests individuels par nom de fichier, en remplaçant les paramètres includes / exclude. Chaque modèle que vous spécifiez ici sera utilisé pour créer un modèle d’inclusion formaté comme ** / $ {test} .java, vous pouvez donc simplement saisir "-Dtest = MyTest" pour exécuter un seul test appelé "foo / MyTest.java".   Ce paramètre remplace les paramètres includes / exclude et le paramètre TestNG suiteXmlFiles. depuis 2.7.3 Vous pouvez exécuter un nombre limité de méthodes dans le test en ajoutant #myMethod ou # my * ethod. Si type "-Dtest = MyTest # myMethod" supporté pour junit 4.x et testNg


4
2018-04-13 17:27



Cette commande fonctionne !!   mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test Notez que "-DTest" commence par UPPER CASE "T".


4
2017-08-07 11:14



Les nouvelles versions de JUnit contiennent le coureur Catégories: http://kentbeck.github.com/junit/doc/ReleaseNotes4.8.html

Mais la procédure de publication de JUnit n'est pas basée sur Maven, les utilisateurs de Maven doivent donc la placer manuellement dans leurs référentiels.


3
2017-12-10 14:10



Vous pouvez exécuter des classes de test et des méthodes spécifiques en utilisant la syntaxe suivante:

  1. package complet: mvn test -Dtest = "com.oracle.tests. **"

  2. toute la méthode d'une classe: mvn test -Dtest = CLASS_NAME1

  3. méthode unique à partir d'une seule classe: test mvn -Dtest = CLASS_NAME1 # METHOD_NAME1

  4. méthode multiple de plusieurs classes: test mvn -Dtest = CLASS_NAME1 # METHOD_NAME1, CLASS_NAME2 # METHOD_NAME2


1
2017-07-02 03:10



Vous pouvez exécuter une seule classe de test, mais pas une seule méthode dans une classe de test. Vous utilisez le nom simple de la classe et non le nom complet de la classe. Donc, si vous avez un test dans "org.sonatype.test.MyTest" et que c'est le seul test que vous voulez exécuter, votre ligne de commande ressemblerait à ceci:

mvn test -Dtest=MyTest

-5
2017-12-09 15:36



A ma connaissance, le plugin surefire ne fournit aucun moyen de le faire. Mais n'hésitez pas à ouvrir un problème :)


-7
2017-12-09 15:14