我想从命令行运行JUnit测试用例。我怎样才能做到这一点?
javac -cp "junit-4.12.jar; hamcrest-core-1.3.jar;." Tests.java
为我工作。注意结束点-这很重要!
我想从命令行运行JUnit测试用例。我怎样才能做到这一点?
javac -cp "junit-4.12.jar; hamcrest-core-1.3.jar;." Tests.java
为我工作。注意结束点-这很重要!
Answers:
对于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中的glob,您可以执行以下操作:
java -cp lib/*.jar:/usr/share/java/junit.jar ...
希望能帮助到你。编写测试!:-)
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,则可以运行以下命令来运行所有测试用例:
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
@lzap给出的答案是一个很好的解决方案。但是,我想补充一点,您应该添加。到类路径,这样就不会遗漏当前目录,从而导致您自己的类被遗漏。在某些平台上,这已经发生在我身上。因此,JUnit 4.x的更新版本为:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
使用JUnit 4.12,以下内容对我不起作用:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
显然,从JUnit 4.11开始,您还应该hamcrest-core.jar
在类路径中包含以下内容:
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]
在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类,在这里,我们习惯于执行测试类。
上面的命令行语句帮助您从命令提示符(即MSDos)执行junit(版本4+)测试。
注意:JUnitCore是执行junit测试的外观,该外观包含在4个以上的junit版本中。
实际上,您还可以使Junit测试成为可运行的Jar,然后将可运行的jar称为java -jar
如果您的项目是基于Maven的,则可以使用以下命令运行属于模块“ my-module”的测试类CustomTest中的所有测试方法:
mvn clean test -pl :my-module -Dtest=CustomTest
或使用以下命令从测试类CustomTest中仅运行1个测试方法myMethod:
mvn clean test -pl :my-module -Dtest=CustomTest#myMethod
为此,您需要Maven Surefire插件v.2.7.3 +和Junit4。有关更多详细信息,请参见:http ://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html
或者,您可以在JunitCore类http://junit.sourceforge.net/javadoc/org/junit/runner/JUnitCore.html中使用以下方法
从Java文件运行(带有Request,Class类和Runner)或runClasses。
如果您的项目基于蚂蚁,那么您应该可以从控制台执行以下操作:
ant test
如果这不起作用,但是您的项目仍然基于ant,则可以运行ant -p
以列出项目的主要目标。