我想从命令行运行JUnit测试用例。 我怎么能这样做?
答案 0 :(得分:250)
对于 JUnit 5.x ,它是:
java -jar junit-platform-console-standalone-<version>.jar <Options>
在https://stackoverflow.com/a/52373592/1431016查找简要摘要,并在https://junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher
查看完整详情对于 JUnit 4.X ,它确实是:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
但是如果您使用 JUnit 3.X ,请注意班级名称不同:
java -cp .:/usr/share/java/junit.jar junit.textui.TestRunner [test class name]
您可能需要将更多JAR或目录与类文件一起添加到类路径中,并用分号(Windows)或冒号(UNIX / Linux)分隔。这取决于你的环境。
编辑:我添加了当前目录作为示例。取决于您的环境以及您如何构建应用程序(可以是bin /或build /甚至my_application.jar等)。注意Java 6+在classpath中支持globs,你可以这样做:
java -cp lib/*.jar:/usr/share/java/junit.jar ...
希望它有所帮助。 编写测试!: - )
答案 1 :(得分:83)
Maven方式
如果您使用Maven,则可以运行以下命令来运行所有测试用例:
mvn clean test
或者您可以按以下方式运行特定测试
mvn clean test -Dtest=your.package.TestClassName
mvn clean test -Dtest=your.package.TestClassName#particularMethod
如果您希望在控制台中看到堆栈跟踪(如果有)而不是target \ surefire-reports文件夹中的报告文件,请将用户属性surefire.useFile设置为false。例如:
mvn clean test -Dtest=your.package.TestClassName -Dsurefire.useFile=false
Gradle way
如果使用Gradle,则可以运行以下命令来运行所有测试用例:
gradle test
或者您可以按以下方式运行特定测试
gradle test --tests your.package.TestClassName
gradle test --tests your.package.TestClassName.particularMethod
如果您想了解更多信息,可以考虑使用--stacktrace, - info或--debug等选项。
例如,当您使用信息日志记录级别--info运行Gradle时,它将显示每个测试运行时的结果。如果有任何异常,它将显示堆栈跟踪,指出问题所在。
gradle test --info
如果您想查看整体测试结果,可以在浏览器中打开报告,例如(在Ubuntu中使用Google Chrome打开它):
google-chrome build/reports/tests/index.html
蚂蚁方式
设置Ant构建文件build.xml后,可以从命令行运行JUnit测试用例,如下所示:
ant -f build.xml <Your JUnit test target name>
您可以按照以下链接阅读有关如何在Ant构建文件中配置JUnit测试的更多信息: https://ant.apache.org/manual/Tasks/junit.html
正常方式
如果您不使用Maven,Gradle或Ant,则可以按照以下方式使用:
首先,您需要编译测试用例。例如(在Linux中):
javac -d /absolute/path/for/compiled/classes -cp /absolute/path/to/junit-4.12.jar /absolute/path/to/TestClassName.java
然后运行您的测试用例。例如:
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
答案 2 :(得分:50)
@lzap给出的答案是一个很好的解决方案。但是,我想补充一点,你应该添加。到类路径,以便不会遗漏当前目录,从而导致您自己的类被省略。这在某些平台上发生在我身上。所以JUnit 4.x的更新版本将是:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
答案 3 :(得分:21)
答案 4 :(得分:18)
使用JUnit 4.12,以下内容对我不起作用:
hamcrest-core.jar
Apparently,从JUnit 4.11开始,您还应该在类路径中包含java -cp .:/usr/share/java/junit.jar:/usr/share/java/hamcrest-core.jar org.junit.runner.JUnitCore [test class name]
:
grep ^\<http://stackoverflow file1.txt
答案 5 :(得分:12)
在Windows中它是
java -cp .;/path/junit.jar org.junit.runner.JUnitCore TestClass
[没有.class扩展名的测试类名称]
例如:
c:\>java -cp .;f:/libraries/junit-4.8.2 org.junit.runner.JUnitCore TestSample1 TestSample2 ...
等等,如果有一个以上的测试类。
-cp 代表类路径,点(。)表示现有的类路径,而半冒号(;)将附加的给定jar附加到类路径,如上例junit-4.8.2现在可以在类路径中使用,以执行我们用于执行测试类的JUnitCore类。
上面的命令行语句可以帮助您从命令提示符(i-e MSDos)执行junit(版本4+)测试。
注意:JUnitCore是一个执行junit测试的外观,这个外观包含在4个以上版本的junit中。
答案 6 :(得分:5)
实际上你也可以让Junit测试成为一个可运行的Jar并调用runnable jar java -jar
答案 7 :(得分:4)
就个人而言,我会使用Maven surefire JUnit跑步者来做到这一点。
答案 8 :(得分:4)
如果您的项目是基于Maven的,那么您可以运行测试类CustomTest中的所有测试方法,该测试类属于模块&#39; my-module&#39;使用下一个命令:
mvn clean test -pl :my-module -Dtest=CustomTest
或者使用下一个命令从测试类CustomTest运行一个测试方法myMethod:
mvn clean test -pl :my-module -Dtest=CustomTest#myMethod
对于这种能力,你需要Maven Surefire插件v.2.7.3 +和Junit 4。 更多详情请点击此处:http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html
答案 9 :(得分:0)
如果你的项目是基于ant的,那么你应该可以从控制台做这样的事情:
ant test
如果这不起作用,但您的项目仍然是基于ant的,则可以运行ant -p
列出项目的主要目标。
答案 10 :(得分:0)
或者,您可以在JunitCore类http://junit.sourceforge.net/javadoc/org/junit/runner/JUnitCore.html
中使用以下方法运行(使用Request,Class classes和Runner)或java文件中的runClasses。
答案 11 :(得分:0)