Chtěl bych spouštět testovací případy JUnit z příkazové řádky. Jak to mohu udělat?
Pro JUnit 5.x je to:
Java -jar junit-platform-console-standalone-<version>.jar <Options>
Stručné shrnutí naleznete na https://stackoverflow.com/a/52373592/1431016 a úplné podrobnosti najdete na https://junit.org/junit5/docs/current/user-guide/# running-tests-console-launcher
Pro JUnit 4.X je to opravdu:
Java -cp .:/usr/share/Java/junit.jar org.junit.runner.JUnitCore [test class name]
Ale pokud používáte JUnit 3.X , název třídy je jiný:
Java -cp .:/usr/share/Java/junit.jar junit.textui.TestRunner [test class name]
Možná budete muset přidat další soubory JAR nebo adresáře s vašimi soubory třídy na cestu třídy a oddělit je středníky (Windows) nebo dvojtečky (UNIX/Linux). Záleží na vašem prostředí.
Upravit: Jako příklad jsem přidal aktuální adresář. Závisí na vašem prostředí a na tom, jak sestavujete aplikaci (může to být bin/nebo build/nebo dokonce my_application.jar atd.). Poznámka: Java 6+ nepodporuje glóby ve třídě, můžete:
Java -cp lib/*.jar:/usr/share/Java/junit.jar ...
Doufám, že to pomůže. Napište testy! :-)
Maven way
Pokud používáte Maven, můžete spustit následující příkaz ke spuštění všech testovacích případů:
mvn clean test
Nebo můžete spustit konkrétní test, jak je uvedeno níže
mvn clean test -Dtest=your.package.TestClassName
mvn clean test -Dtest=your.package.TestClassName#particularMethod
Pokud byste chtěli vidět trasování zásobníku (pokud existuje) v konzoli namísto souborů sestav ve složce target\surefire-reports, nastavte vlastnost userfire.useFile na false. Například:
mvn clean test -Dtest=your.package.TestClassName -Dsurefire.useFile=false
Gradle way
Pokud používáte Gradle, můžete spustit následující příkaz ke spuštění všech testovacích případů:
gradle test
Nebo můžete spustit konkrétní test, jak je uvedeno níže
gradle test --tests your.package.TestClassName
gradle test --tests your.package.TestClassName.particularMethod
Pokud byste chtěli získat více informací, můžete zvážit možnosti, jako jsou --stacktrace nebo --info nebo --debug.
Například když spustíte Gradle s úrovní protokolování informací --info, zobrazí se vám výsledek každého testu, když jsou spuštěny. Pokud existuje nějaká výjimka, zobrazí trasování zásobníku a upozorní na problém.
gradle test --info
Pokud byste chtěli vidět celkové výsledky testů, můžete sestavu otevřít například v prohlížeči (v Ubuntu ji otevřete pomocí Google Chrome):
google-chrome build/reports/tests/index.html
Mravenec
Po nastavení souboru build buildu Ant.xml můžete spustit testovací případy JUnit z příkazového řádku, jak je uvedeno níže:
ant -f build.xml <Your JUnit test target name>
Chcete-li se dozvědět více o tom, jak konfigurovat testy JUnit v souboru sestavení Ant, postupujte podle následujícího odkazu: https://ant.Apache.org/manual/Tasks/junit.html
Normální způsob
Pokud nepoužíváte Maven nebo Gradle nebo Ant, můžete postupovat následujícím způsobem:
Nejprve je třeba sestavit vaše testovací případy. Například (v systému Linux):
javac -d /absolute/path/for/compiled/classes -cp /absolute/path/to/junit-4.12.jar /absolute/path/to/TestClassName.Java
Poté spusťte testovací případy. Například:
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
Odpověď, kterou @lzap dal, je dobrým řešením. Chtěl bych však dodat, že byste měli přidat. na cestu třídy, takže váš aktuální adresář nebude vynechán, což povede k vynechání vašich vlastních tříd. To se mi stalo na některých platformách. Aktualizovaná verze pro JUnit 4.x by tedy byla:
Java -cp .:/usr/share/Java/junit.jar org.junit.runner.JUnitCore [test class name]
Ujistěte se, že JUnit.jar je ve vaší třídě, a potom z konzoly vyvolejte běh příkazového řádku
Java org.junit.runner.JUnitCore [název třídy testu]
Reference: nejčastější dotazy
U JUnit 4.12 pro mě nefungovalo:
Java -cp .:/usr/share/Java/junit.jar org.junit.runner.JUnitCore [test class name]
Zjevně , od JUnit 4.11 a dále byste měli také do své třídy zahrnout hamcrest-core.jar
:
Java -cp .:/usr/share/Java/junit.jar:/usr/share/Java/hamcrest-core.jar org.junit.runner.JUnitCore [test class name]
V oknech to je
Java -cp .;/path/junit.jar org.junit.runner.JUnitCore TestClass
[název testovací třídy bez přípony .class]
například: c:\>Java -cp .;f:/libraries/junit-4.8.2 org.junit.runner.JUnitCore TestSample1 TestSample2 ...
atd., pokud má jeden více než jednu testovací třídu.
- cp je zkratka pro cestu třídy a tečka (.) představuje existující cestu třídy, zatímco středník (;) připojí další danou nádobu k cestě třídy, protože ve výše uvedeném příkladu je nyní k dispozici junit-4.8.2 in classpath k provedení třídy JUnitCore, kterou jsme zde použili k provedení našich testovacích tříd.
Výše uvedený příkazový řádek vám pomůže provádět testy typu junit (verze 4+) z příkazu Prompt (i-e MSDos).
Poznámka: JUnitCore je fasáda pro provádění testů junit, tato fasáda je součástí 4+ verzí junit.
Ve skutečnosti můžete také provést test Junit jako spustitelnou nádobu a zavolat spouštěnou nádobu jako Java -jar
Osobně bych na to použil běžec JAVIT Maven surefire.
Pokud je váš projekt založen na Maven, můžete spustit všechny testovací metody z CustomTest testovací třídy, který patří do modulu 'my-module', pomocí následujícího příkazu:
mvn clean test -pl :my-module -Dtest=CustomTest
Nebo spusťte pouze 1 testovací metodu myMethod z testovací třídy CustomTest pomocí následujícího příkazu:
mvn clean test -pl :my-module -Dtest=CustomTest#myMethod
Pro tuto schopnost potřebujete Maven Surefire Plugin v.2.7.3 + a Junit 4. Další podrobnosti naleznete zde: http://maven.Apache.org/surefire/maven-surefire-plugin/examples/single-test .html
Pokud je projekt založen na mravenci, měli byste být schopni udělat něco podobného z konzoly:
ant test
Pokud to nefunguje, ale přesto je váš projekt založen na mravencích, můžete spustit ant -p
a uvést hlavní cíle projektu.
Alternativně můžete použít následující metody ve třídě JunitCore http://junit.sourceforge.net/javadoc/org/junit/runner/JUnitCore.html
spusťte (s Request, Class Class and Runner) nebo runClasses ze souboru Java.