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

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

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 append d’autres fichiers JAR ou 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 actuel à titre d’exemple. Cela 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.). Remarque Java 6+ prend en charge les globs dans classpath, vous pouvez le faire:

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

J’espère que cela aide. Ecrire des tests! 🙂

Façon Maven

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 la stack (le cas échéant) dans la console au lieu des 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 

Façon gradle

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 journalisation d’informations –info, il affiche le résultat de chaque test pendant qu’il s’exécute. S’il y a une exception, il vous montrera la trace de la stack, en soulignant le problème.

 gradle test --info 

Si vous souhaitez voir les résultats globaux des tests, vous pouvez par exemple ouvrir le rapport dans le navigateur (ouvrez-le à l’aide de Google Chrome dans Ubuntu):

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

Chemin de fourmi

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

 ant -f build.xml  

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

Façon normale

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

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

 javac -d /absolute/path/for/comstackd/classes -cp /absolute/path/to/junit-4.12.jar /absolute/path/to/TestClassName.java 

Ensuite, exécutez vos cas de test. Par exemple:

 java -cp /absolute/path/for/comstackd/classes:/absolute/path/to/junit-4.12.jar:/absolute/path/to/hamcrest-core-1.3.jar org.junit.runner.JUnitCore your.package.TestClassName 

La réponse que @lzap a donnée est une bonne solution. Cependant, je voudrais append que vous devriez append. au chemin de la classe, de sorte que votre répertoire actuel ne soit pas omis, ce qui entraînerait la suppression 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] 

Assurez-vous que JUnit.jar se trouve dans votre chemin de classe, puis appelez le exécuteur de ligne de commande à partir de la console

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

Référence: FAQ de junit

Avec JUnit 4.12, ce qui suit n’a pas fonctionné pour moi:

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

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

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

Dans windows 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, si l’on dispose de plusieurs classes de test.

-cp représente le chemin de classe et le point (.) représente le chemin de classe existant tandis que les points-virgules (;) ajoutent le fichier jar donné au chemin de classe, comme dans l’exemple ci-dessus, junit-4.8.2 est maintenant disponible dans classpath pour exécuter la classe JUnitCore ici nous avons utilisé pour exécuter nos classes de test.

L’instruction de ligne de commande ci-dessus vous permet d’exécuter des tests de junit (version 4+) à partir d’une invite de commande (c.-à-d. MSDos).

Note: JUnitCore est une façade pour exécuter des tests de Junit, cette façade est incluse dans plus de 4 versions de junit.

En fait, vous pouvez également faire du Junit un Jar exécutable et appeler le jar exécutable comme java -jar

Si votre projet est basé sur Maven, vous pouvez exécuter toutes les méthodes de test de la classe de test CustomTest qui appartient au module ‘my-module’ en utilisant 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 cette possibilité, vous avez besoin du plug-in Maven Surefire v.2.7.3 + et Junit 4. Plus de détails ici: http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html

Personnellement, j’utiliserais le runner Maven surefire JUnit pour le faire.

Sinon, vous pouvez utiliser les méthodes suivantes dans la classe JunitCore http://junit.sourceforge.net/javadoc/org/junit/runner/JUnitCore.html

exécuter (avec Request, Class classes et Runner) ou runClasses à partir de votre fichier java.

Si vous projetez est basé ant, alors 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 toujours basé, vous pouvez exécuter ant -p pour répertorier les principales cibles du projet.