397 votes

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

J'aimerais exécuter des scénarios de test JUnit à partir de la ligne de commande. Comment puis-je le faire ?

0 votes

Similaire Android question de junit : stackoverflow.com/q/11144466/611007

0 votes

Docs Android : exécuter des tests sur un dispositif ou un émulateur (à partir de la ligne de commande). ( via andreea.sandu)

0 votes

Réponse pour JUnit 5 à stackoverflow.com/a/52373592/1431016

306voto

lzap Points 5049

Para JUnit 5.x c'est :

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

Vous trouverez un bref résumé à l'adresse suivante https://stackoverflow.com/a/52373592/1431016 et tous les détails à https://junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher

Para 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 d'autres JAR ou répertoires contenant vos fichiers de classe au classpath 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 comme exemple. Cela dépend de votre environnement et de la façon dont vous construisez votre application (peut être bin/ ou build/ ou même my_application.jar etc). Note Java 6+ supporte les globs dans le classpath, vous pouvez le faire :

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

J'espère que cela vous aidera. Écrivez des tests ! :-)

0 votes

@Izap Une idée pour déterminer par programme si un test utilise JUnit4 ou JUnit3 ?

2 votes

Class.forName je suppose. Cela fait des années que je n'ai pas programmé en Java pour la dernière fois...

0 votes

Et que faire si vous utilisez Android ?

54voto

rand_acs Points 437

La réponse donnée par @lzap est une bonne solution. Cependant, j'aimerais ajouter que vous devriez ajouter . au chemin des classes, afin que votre répertoire actuel ne soit pas oublié, ce qui aurait pour conséquence d'exclure vos propres classes. Cela m'est arrivé sur certaines plateformes. Donc une version mise à jour pour JUnit 4.x serait :

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

1 votes

C'est censé être un point-virgule ?

14 votes

@panny c'est un point-virgule sous Windows. Dans un environnement *nix (au moins OSX et toutes les distributions Linux que j'ai utilisées), on utilise les deux points.

1 votes

@rand_acs le nom de la classe de test doit-il être le nom de la classe entièrement classifiée ?

24voto

Gishu Points 59012

Assurez-vous que JUnit.jar est dans votre classpath, puis invoquez le runner en ligne de commande depuis la console

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

Référence : junit FAQ

5 votes

Vous devez également configurer le reste du classpath de votre projet.

2 votes

Cela donne simplement "Could not find class : [nom de la classe de test]", même si [nom de la classe de test] figure dans le classpath.

12voto

Rajper Points 150

Sous 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 a plus d'une classe de test.

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

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

Note : JUnitCore est une facade pour exécuter les tests junit, cette facade est incluse dans les versions 4+ de junit.

0 votes

Veuillez expliquer votre réponse de manière très brève.

0 votes

Je ne vous ai pas demandé d'être bref dans votre réponse. Je vous ai demandé d'ajouter une explication (au moins une brève explication). C'est une bonne pratique d'expliquer comment votre réponse fonctionne. Les lecteurs peuvent la comprendre, l'aimer et l'upvoter.

0 votes

Donc si j'avais un jar de test supplémentaire ET le jar de junit vanille, je devrais avoir les deux dans la commande java -cp pour que quelque chose fonctionne réellement ? Y a-t-il un moyen d'éviter d'avoir à mettre tout cela dans une ligne de commande afin de ne pas avoir à taper autant de choses ?

5voto

Indraneel Points 11

En fait, vous pouvez aussi faire du test Junit un Jar exécutable et appeler le Jar exécutable de la manière suivante java -jar

2 votes

Dans Eclipse, cliquez avec le bouton droit de la souris sur votre projet JUnit -> Cliquez sur Export --> Choisissez Java-> Runnable Jar File.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X