web-dev-qa-db-fra.com

Comment exécuter des cas de test JUnit à partir de la ligne de commande

Je voudrais exécuter des cas de test JUnit à partir de la ligne de commande. Comment puis-je faire ceci?

311
KK.

Pour JUnit 5.x c'est:

Java -jar junit-platform-console-standalone-<version>.jar <Options>

Trouvez un bref résumé sur https://stackoverflow.com/a/52373592/1431016 et tous les détails sur https://junit.org/junit5/docs/current/user-guide/# running-tests-console-launcher

Pour JUnit 4.X c'est vraiment:

Java -cp .:/usr/share/Java/junit.jar org.junit.runner.JUnitCore [test class name]

Mais si vous utilisez JUnit 3.X , notez que le nom de la classe est différent:

Java -cp .:/usr/share/Java/junit.jar junit.textui.TestRunner [test class name]

Vous devrez peut-être ajouter plus de JAR ou de répertoires avec vos fichiers de classe au chemin de classe et les séparer par des points-virgules (Windows) ou des deux-points (UNIX/Linux). Cela dépend de votre environnement.

Edit: J'ai ajouté le répertoire courant à titre d'exemple. Dépend de votre environnement et de la manière dont vous construisez votre application (bin/ou build/ou même my_application.jar, etc.). Note Java 6+ supporte les globs dans classpath, vous pouvez faire:

Java -cp lib/*.jar:/usr/share/Java/junit.jar ...

J'espère que ça aide. Ecrivez des tests! :-)

260
lzap

Maven way

Si vous utilisez Maven, vous pouvez exécuter la commande suivante pour exécuter tous vos scénarios de test:

mvn clean test

Ou vous pouvez exécuter un test particulier comme ci-dessous

mvn clean test -Dtest=your.package.TestClassName
mvn clean test -Dtest=your.package.TestClassName#particularMethod

Si vous souhaitez voir la trace de pile (le cas échéant) dans la console au lieu de fichiers de rapport dans le dossier target\surefire-reports, définissez la propriété utilisateur surefire.useFile sur false. Par exemple:

mvn clean test -Dtest=your.package.TestClassName -Dsurefire.useFile=false

Gradle way

Si vous utilisez Gradle, vous pouvez exécuter la commande suivante pour exécuter tous vos scénarios de test:

gradle test

Ou vous pouvez exécuter un test particulier comme ci-dessous

gradle test --tests your.package.TestClassName
gradle test --tests your.package.TestClassName.particularMethod

Si vous souhaitez plus d'informations, vous pouvez envisager des options telles que --stacktrace, ou --info ou --debug.

Par exemple, lorsque vous exécutez Gradle avec le niveau de consignation d’informations --info, le résultat de chaque test s’affiche. S'il y a une exception, il vous montrera la trace de la pile, en indiquant le problème.

gradle test --info

Si vous souhaitez voir les résultats globaux du test, vous pouvez ouvrir le rapport dans le navigateur, par exemple (Ouvrez-le à l'aide de Google Chrome dans Ubuntu):

google-chrome build/reports/tests/index.html

Ant way

Une fois que vous avez configuré votre fichier de génération Ant build.xml, vous pouvez exécuter vos scénarios de test JUnit à partir de la ligne de commande, comme indiqué ci-dessous:

ant -f build.xml <Your JUnit test target name>

Vous pouvez suivre le lien ci-dessous pour en savoir plus sur la configuration des tests JUnit dans le fichier de construction Ant: https://ant.Apache.org/manual/Tasks/junit.html

Manière normale

Si vous n'utilisez pas Maven, Gradle ou Ant, vous pouvez suivre la procédure suivante:

Tout d’abord, vous devez compiler vos cas de test. Par exemple (sous Linux):

javac -d /absolute/path/for/compiled/classes -cp /absolute/path/to/junit-4.12.jar /absolute/path/to/TestClassName.Java

Ensuite, lancez vos cas de test. Par exemple:

Java -cp /absolute/path/for/compiled/classes:/absolute/path/to/junit-4.12.jar:/absolute/path/to/hamcrest-core-1.3.jar org.junit.runner.JUnitCore your.package.TestClassName
94
Yuci

La réponse donnée par @lzap est une bonne solution. Cependant, je voudrais ajouter que vous devriez ajouter. dans le chemin de classe, de sorte que votre répertoire actuel ne soit pas omis, ce qui entraînera l’omission de vos propres classes. Cela m'est arrivé sur certaines plates-formes. Donc, une version mise à jour pour JUnit 4.x serait:

Java -cp .:/usr/share/Java/junit.jar org.junit.runner.JUnitCore [test class name]
50
rand_acs

Assurez-vous que JUnit.jar est dans votre chemin de classe, puis appelez le programme d'exécution de ligne de commande à partir de la console.

Java org.junit.runner.JUnitCore [nom de la classe de test]

Référence: FAQ Junit

21
Gishu

Avec JUnit 4.12, les éléments suivants ne fonctionnaient pas pour moi:

Java -cp .:/usr/share/Java/junit.jar org.junit.runner.JUnitCore [test class name]

Apparemment , à partir de JUnit 4.11, vous devez également inclure hamcrest-core.jar dans votre chemin de classe:

Java -cp .:/usr/share/Java/junit.jar:/usr/share/Java/hamcrest-core.jar org.junit.runner.JUnitCore [test class name]
19

Dans les fenêtres c'est

Java -cp .;/path/junit.jar org.junit.runner.JUnitCore TestClass [nom de la classe de test sans extension .class]

par exemple: c:\>Java -cp .;f:/libraries/junit-4.8.2 org.junit.runner.JUnitCore TestSample1 TestSample2 ... et ainsi de suite, s'il en existe plusieurs.

- cp signifie class path et le point (.) représente le classpath existant, tandis que le point-virgule (;) ajoute le fichier jar supplémentaire au classpath, comme dans l'exemple ci-dessus, junit-4.8.2 est maintenant disponible. dans classpath pour exécuter la classe JUnitCore utilisée ici pour exécuter nos classes de test.

L'instruction en ligne de commande ci-dessus vous aide à exécuter les tests junit (version 4+) à partir de l'invite de commande (i-e MSDos).

Remarque: JUnitCore est une façade permettant d'exécuter des tests Junit. Cette façade est incluse dans 4 versions ou plus de Junit.

12
rogue lad

En fait, vous pouvez également faire en sorte que Junit teste un fichier jar exécutable et appelez-le en tant que fichier Java -jar.

5
Indraneel

Personnellement, j'utiliserais le coureur Maven Jef pour faire cela.

4
djangofan

Si votre projet est basé sur Maven, vous pouvez exécuter toutes les méthodes de test à partir de la classe de test CustomTest, appartenant au module 'my-module', à l'aide de la commande suivante:

mvn clean test -pl :my-module -Dtest=CustomTest

Ou exécutez seulement 1 méthode de test myMethod à partir de la classe de test CustomTest en utilisant la commande suivante:

mvn clean test -pl :my-module -Dtest=CustomTest#myMethod

Pour cela, vous avez besoin de Maven Surefire Plugin v.2.7.3 + et de Junit 4. Plus de détails à ce sujet: http://maven.Apache.org/surefire/maven-surefire-plugin/examples/single-test .html

4
user1092126

Si votre projet est basé sur Ant, vous devriez être capable de faire quelque chose comme ça depuis la console:

ant test

Si cela ne fonctionne pas, mais que votre projet est basé sur ant, vous pouvez exécuter ant -p pour répertorier les cibles principales du projet.

0
cherouvim

Vous pouvez également utiliser les méthodes suivantes dans la classe JunitCore http://junit.sourceforge.net/javadoc/org/junit/runner/JunitCore.html

run (avec Request, Class classes et Runner) ou runClasses à partir de votre fichier Java.

0
Raghu K Nair