如何从命令行运行JUnittesting用例
我想从命令行运行JUnittesting用例。 我该怎么做?
对于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或目录与您的类文件一起添加到类path中,并使用分号(Windows)或冒号(UNIX / Linux)进行分隔。 这取决于你的环境。
编辑:我已经添加了当前目录作为例子。 取决于你的环境以及你如何构build你的应用程序(可以是bin /或者build /甚至是my_application.jar等等)。 注意Java 6+在classpath中支持全局,你可以这样做:
java -cp lib/*.jar:/usr/share/java/junit.jar ...
希望它有帮助。 写testing! 🙂
@lzap给出的答案是一个很好的解决scheme。 不过,我想补充一点,你应该加上。 到类path,以便您的当前目录不会被遗漏,导致您自己的类被排除在外。 这在一些平台上发生在我身上。 所以JUnit 4.x的更新版本是:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Maven的方式
如果您使用Maven,则可以运行以下命令来运行所有testing用例:
mvn clean test
或者你可以运行一个特定的testing如下
mvn clean test -Dtest=your.package.TestClassName mvn clean test -Dtest=your.package.TestClassName#particularMethod
如果希望在控制台中看到堆栈跟踪(如果有)而不是目标\ surefire-reports文件夹中的报告文件,请将用户属性surefire.useFile设置为false。 例如:
mvn clean test -Dtest=your.package.TestClassName -Dsurefire.useFile=false
Gradle的方式
如果您使用Gradle,则可以运行以下命令来运行所有testing用例:
gradle test
或者你可以运行一个特定的testing如下
gradle test --tests your.package.TestClassName gradle test --tests your.package.TestClassName.particularMethod
如果您想了解更多信息,可以考虑诸如–stacktrace,–info或者–debug之类的选项。
例如,当您使用信息日志logging级别–info运行Gradle时,它会显示每个testing运行时的结果。 如果有任何exception,它会显示堆栈跟踪,指出问题是什么。
gradle test --info
如果您想查看整体testing结果,则可以在浏览器中打开报告(例如,使用Ubuntu中的Google Chrome打开它):
google-chrome build/reports/tests/index.html
ant的方式
一旦设置了Ant构build文件build.xml,就可以从命令行运行JUnittesting用例,如下所示:
ant -f build.xml <Your JUnit test target name>
您可以按照下面的链接阅读更多关于如何在Ant构build文件中configurationJUnittesting: https : //ant.apache.org/manual/Tasks/junit.html
正常的方式
如果你不使用Maven,Gradle或者Ant,你可以按照下面的方法:
首先,你需要编译你的testing用例。 例如(在Linux中):
javac -d /absolute/path/for/compiled/classes -cp /absolute/path/to/junit-4.12.jar /absolute/path/to/TestClassName.java
然后运行你的testing用例。 例如:
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
确保JUnit.jar在您的类path中,然后从控制台调用命令行运行程序
java org.junit.runner.JUnitCore [testing类名]
参考: junit常见问题
使用JUnit 4.12,以下内容对我不起作用:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
显然 ,从JUnit 4.11开始,你还应该在你的classpath中包含hamcrest-core.jar
:
java -cp .:/usr/share/java/junit.jar:/usr/share/java/hamcrest-core.jar org.junit.runner.JUnitCore [test class name]
在Windows中
java -cp .;/path/junit.jar org.junit.runner.JUnitCore TestClass
[不带.class扩展名的testing类名]
例如: c:\>java -cp .;f:/libraries/junit-4.8.2 org.junit.runner.JUnitCore TestSample1 TestSample2 ...
等等,如果有多个testing类的话。
-cp代表类path,点(。)代performance有的类path,而冒号(;)将附加给定jar添加到类path中,如上面的例子所示,junit-4.8.2现在可以在类path中用来执行JUnitCore类这里我们已经习惯了执行我们的testing课程。
上面的命令行语句可以帮助您从命令提示符(即MSDos)执行junit(版本4+)testing。
注:JUnitCore是一个执行junittesting的外观,这个外观包含在junit的4个以上版本中。
实际上,你也可以使Junittesting成为一个可运行的Jar,并将可运行的JAR调用为java -jar
我个人会使用Maven surefire JUnit亚军来做到这一点。
如果您的项目是基于Maven的,则可以使用下一个命令运行属于模块“my-module”的testing类CustomTest中的所有testing方法:
mvn clean test -pl :my-module -Dtest=CustomTest
或者使用下一个命令从test-class CustomTest中仅运行1个testing方法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
或者,您可以在JunitCore类中使用以下方法http://junit.sourceforge.net/javadoc/org/junit/runner/JUnitCore.html
运行(使用Request,Class类和Runner)或从java文件运行类。
如果你的项目是基于ant的,那么你应该可以在控制台上做这样的事情:
ant test
如果这不起作用,但是您的项目仍然是基于ant的,您可以运行ant -p
来列出项目的主要目标。