J'essaie de trouver une approche qui me permettra d'exécuter un seul test à partir d'une classe JUnit en utilisant uniquement la ligne de commande et java.
Je peux exécuter l'ensemble des tests de la classe en utilisant ce qui suit:
java -cp .... org.junit.runner.JUnitCore org.package.classname
Ce que je veux vraiment faire, c'est quelque chose comme ça:
java -cp .... org.junit.runner.JUnitCore org.package.classname.method
ou:
java -cp .... org.junit.runner.JUnitCore org.package.classname#method
J'ai remarqué qu'il pourrait y avoir des moyens de le faire en utilisant les annotations JUnit, mais je préférerais ne pas modifier la source de mes classes de test à la main (en essayant d'automatiser cela). J'ai également vu que Maven pourrait avoir un moyen de le faire, mais si possible, j'aimerais éviter de dépendre de Maven.
Alors je me demande s'il y a un moyen de faire cela?
Points clés que je recherche:
- Possibilité d'exécuter un seul test à partir d'une classe de test JUnit
- Ligne de commande (en utilisant JUnit)
- Évitez de modifier la source de test
- Évitez d'utiliser des outils supplémentaires
java
unit-testing
command-line
junit
Kevin Jalbert
la source
la source
Réponses:
Vous pouvez créer un runner JUnit personnalisé et simple assez facilement. En voici une qui exécutera une seule méthode de test sous la forme
com.package.TestClass#methodName
:Vous pouvez l'invoquer comme ceci:
Après un rapide coup d'œil dans la source JUnit, je suis arrivé à la même conclusion que vous que JUnit ne prend pas en charge cela de manière native. Cela n'a jamais été un problème pour moi car les IDE ont tous des intégrations JUnit personnalisées qui vous permettent d'exécuter la méthode de test sous le curseur, entre autres actions. Je n'ai jamais exécuté de tests JUnit directement depuis la ligne de commande; J'ai toujours laissé l'IDE ou l'outil de construction (Ant, Maven) s'en occuper. Surtout que le point d'entrée CLI par défaut (JUnitCore) ne produit aucune sortie de résultat autre qu'un code de sortie différent de zéro en cas d'échec du test.
REMARQUE: pour la version JUnit> = 4.9, vous avez besoin de la bibliothèque hamcrest dans classpath
la source
J'utilise Maven pour construire mon projet et j'utilise le plugin SureFire maven pour exécuter des tests junit. Si vous disposez de cette configuration, vous pouvez faire:
Dans cet exemple, nous exécutons simplement une méthode de test nommée "testMethod" dans la classe "GreatTestClass".
Pour plus de détails, consultez http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html
la source
Nous avons utilisé IntelliJ et avons passé pas mal de temps à essayer de le comprendre également.
Fondamentalement, cela implique 2 étapes:
Étape 1: Compilez la classe de test
% javac -cp .:"/Applications/IntelliJ IDEA 13 CE.app/Contents/lib/*" SetTest.java
Étape 2: Exécutez le test
% java -cp .:"/Applications/IntelliJ IDEA 13 CE.app/Contents/lib/*" org.junit.runner.JUnitCore SetTest
la source