it-swarm-eu.dev

Jak spustit testovací případy JUnit z příkazového řádku

Chtěl bych spouštět testovací případy JUnit z příkazové řádky. Jak to mohu udělat?

300
KK.

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! :-)

251
lzap

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
87
Yuci

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]
50
rand_acs

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

21
Gishu

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]
18

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.

12
rogue lad

Ve skutečnosti můžete také provést test Junit jako spustitelnou nádobu a zavolat spouštěnou nádobu jako Java -jar

5
Indraneel

Osobně bych na to použil běžec JAVIT Maven surefire.

4
djangofan

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

4
user1092126

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.

0
cherouvim

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.

0
Raghu K Nair