Vorrei eseguire i casi di test JUnit dalla riga di comando. Come posso fare questo?
javac -cp "junit-4.12.jar; hamcrest-core-1.3.jar;." Tests.java
ha funzionato per me. Nota il punto finale: è importante!
Vorrei eseguire i casi di test JUnit dalla riga di comando. Come posso fare questo?
javac -cp "junit-4.12.jar; hamcrest-core-1.3.jar;." Tests.java
ha funzionato per me. Nota il punto finale: è importante!
Risposte:
Per JUnit 5.x è:
java -jar junit-platform-console-standalone-<version>.jar <Options>
Trova un breve riepilogo su https://stackoverflow.com/a/52373592/1431016 e tutti i dettagli su https://junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher
Per JUnit 4.X è davvero:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Ma se si utilizza JUnit 3.X , il nome della classe è diverso:
java -cp .:/usr/share/java/junit.jar junit.textui.TestRunner [test class name]
Potrebbe essere necessario aggiungere più JAR o directory con i file di classe al percorso di classe e separarli con punti e virgola (Windows) o due punti (UNIX / Linux). Dipende dal tuo ambiente.
Modifica: ho aggiunto la directory corrente come esempio. Dipende dal tuo ambiente e da come costruisci la tua applicazione (può essere bin / o build / o anche my_application.jar ecc.). Nota Java 6+ supporta globs in classpath, puoi fare:
java -cp lib/*.jar:/usr/share/java/junit.jar ...
Spero che sia d'aiuto. Scrivi i test! :-)
Via Maven
Se si utilizza Maven, è possibile eseguire il comando seguente per eseguire tutti i casi di test:
mvn clean test
Oppure puoi eseguire un test particolare come di seguito
mvn clean test -Dtest=your.package.TestClassName
mvn clean test -Dtest=your.package.TestClassName#particularMethod
Se si desidera visualizzare la traccia dello stack (se presente) nella console anziché i file di report nella cartella target \ surefire-reports, impostare la proprietà dell'utente surefire.useFile su false. Per esempio:
mvn clean test -Dtest=your.package.TestClassName -Dsurefire.useFile=false
Gradle way
Se si utilizza Gradle, è possibile eseguire il comando seguente per eseguire tutti i casi di test:
gradle test
Oppure puoi eseguire un test particolare come di seguito
gradle test --tests your.package.TestClassName
gradle test --tests your.package.TestClassName.particularMethod
Se desideri maggiori informazioni, puoi prendere in considerazione opzioni come --stacktrace, - --info o --debug.
Ad esempio, quando esegui Gradle con il livello di registrazione delle informazioni --info, ti mostrerà il risultato di ogni test mentre sono in esecuzione. Se c'è qualche eccezione, ti mostrerà la traccia dello stack, indicando qual è il problema.
gradle test --info
Se desideri vedere i risultati complessivi del test, puoi aprire il rapporto nel browser, ad esempio (Aprilo usando Google Chrome in Ubuntu):
google-chrome build/reports/tests/index.html
Modo della formica
Una volta impostato il file build.xml di Ant build, è possibile eseguire i casi di test JUnit dalla riga di comando come di seguito:
ant -f build.xml <Your JUnit test target name>
È possibile seguire il collegamento seguente per ulteriori informazioni su come configurare i test JUnit nel file di build Ant: https://ant.apache.org/manual/Tasks/junit.html
Modo normale
Se non usi Maven, o Gradle o Ant, puoi seguire la seguente procedura:
Prima di tutto, devi compilare i tuoi casi di test. Ad esempio (in Linux):
javac -d /absolute/path/for/compiled/classes -cp /absolute/path/to/junit-4.12.jar /absolute/path/to/TestClassName.java
Quindi eseguire i casi di test. Per esempio:
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
La risposta che @lzap ha dato è una buona soluzione. Tuttavia, vorrei aggiungere che dovresti aggiungere. al percorso della classe, in modo tale che la directory corrente non venga esclusa, in modo da escludere le proprie classi. Questo mi è successo su alcune piattaforme. Quindi una versione aggiornata per JUnit 4.x sarebbe:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Assicurati che JUnit.jar sia nel tuo percorso di classe, quindi invoca il runner della riga di comando dalla console
java org.junit.runner.JUnitCore [nome classe test]
Riferimento: FAQ junit
Con JUnit 4.12 per me non ha funzionato:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Apparentemente , da JUnit 4.11 in poi dovresti anche includere hamcrest-core.jar
nel tuo percorso di classe:
java -cp .:/usr/share/java/junit.jar:/usr/share/java/hamcrest-core.jar org.junit.runner.JUnitCore [test class name]
java -cp .:/usr/share/java/junit4.jar org.junit.runner.JUnitCore [test class name]
In Windows lo è
java -cp .;/path/junit.jar org.junit.runner.JUnitCore TestClass
[nome della classe di prova senza estensione .class]
per esempio:
c:\>java -cp .;f:/libraries/junit-4.8.2 org.junit.runner.JUnitCore TestSample1 TestSample2 ...
e così via, se uno ha più di una classe di test.
-cp indica il percorso di classe e il punto (.) rappresenta il percorso di classe esistente mentre i due punti (;) aggiungono il jar dato aggiuntivo al percorso di classe, poiché nell'esempio precedente junit-4.8.2 è ora disponibile nel percorso di classe per eseguire la classe JUnitCore che qui abbiamo usato per eseguire le nostre classi di test.
L'istruzione della riga di comando sopra riportata consente di eseguire i test junit (versione 4+) dal prompt dei comandi (ad es. MSDos).
Nota: JUnitCore è una facciata per eseguire test di junit, questa facciata è inclusa in 4+ versioni di junit.
In realtà puoi anche rendere Junit test un Jar eseguibile e chiamare il jar eseguibile come java -jar
Se il tuo progetto è basato su Maven, puoi eseguire tutti i metodi di test dal test CustomTest di classe che appartiene al modulo 'my-module' usando il comando successivo:
mvn clean test -pl :my-module -Dtest=CustomTest
Oppure esegui solo 1 metodo test myMethod dal testTest CustomTest utilizzando il comando successivo:
mvn clean test -pl :my-module -Dtest=CustomTest#myMethod
Per questa capacità sono necessari Maven Surefire Plugin v.2.7.3 + e Junit 4. Maggiori dettagli sono disponibili qui: http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html
In alternativa è possibile utilizzare i seguenti metodi nella classe JunitCore http://junit.sourceforge.net/javadoc/org/junit/runner/JUnitCore.html
run (con Request, classi Class e Runner) o runClasses dal tuo file java.
Se il tuo progetto è basato su formica, dovresti essere in grado di fare qualcosa del genere dalla console:
ant test
Se questo non funziona, ma il tuo progetto è ancora basato su formica, puoi eseguire ant -p
per elencare i principali obiettivi del progetto.