J'aimerais exécuter des scénarios de test JUnit à partir de la ligne de commande. Comment puis-je le faire ?
@Izap Une idée pour déterminer par programme si un test utilise JUnit4 ou JUnit3 ?
J'aimerais exécuter des scénarios de test JUnit à partir de la ligne de commande. Comment puis-je le faire ?
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 ! :-)
Class.forName je suppose. Cela fait des années que je n'ai pas programmé en Java pour la dernière fois...
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]
@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.
@rand_acs le nom de la classe de test doit-il être le nom de la classe entièrement classifiée ?
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.
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.
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 ?
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.
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
1 votes
javac -cp "junit-4.12.jar; hamcrest-core-1.3.jar;." Tests.java
a fonctionné pour moi. Notez le point final - c'est important !