如何从命令行运行JUnit测试用例

KK.*_*KK. 320 junit command-line unit-testing

我想从命令行运行JUnit测试用例.我怎样才能做到这一点?

lza*_*zap 267

对于JUnit 5.x,它是:

java -jar junit-platform-console-standalone-<version>.jar <Options>
Run Code Online (Sandbox Code Playgroud)

有关详细摘要,访问/sf/answers/3666151471/,详细信息请访问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]
Run Code Online (Sandbox Code Playgroud)

但是,如果您使用的是JUnit 3.X,请注意类名称是不同的:

java -cp .:/usr/share/java/junit.jar junit.textui.TestRunner [test class name]
Run Code Online (Sandbox Code Playgroud)

您可能需要将更多JAR或目录与类文件一起添加到类路径中,并用分号(Windows)或冒号(UNIX/Linux)分隔.这取决于您的环境.

编辑:我添加了当前目录作为示例.取决于您的环境以及您如何构建应用程序(可以是bin /或build /甚至my_application.jar等).注意Java 6+在classpath中支持globs,你可以这样做:

java -cp lib/*.jar:/usr/share/java/junit.jar ...
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.写测试!:-)

  • 我想是Class.forName.这是我最后一次用Java编程的时间...... (2认同)
  • 投反对票。对于 JUnit 4.x 来说这是不对的。即使 [测试类名称] 位于类路径中,您的指示也会给出“无法找到类:[测试类名称]”。 (2认同)

Yuc*_*uci 101

Maven方式

如果您使用Maven,则可以运行以下命令来运行所有测试用例:

mvn clean test
Run Code Online (Sandbox Code Playgroud)

或者您可以按如下方式运行特定测试

mvn clean test -Dtest=your.package.TestClassName
mvn clean test -Dtest=your.package.TestClassName#particularMethod
Run Code Online (Sandbox Code Playgroud)

如果您希望在控制台中看到堆栈跟踪(如果有)而不是target\surefire-reports文件夹中的报告文件,请将用户属性surefire.useFile设置为false.例如:

mvn clean test -Dtest=your.package.TestClassName -Dsurefire.useFile=false
Run Code Online (Sandbox Code Playgroud)

Gradle方式

如果使用Gradle,则可以运行以下命令来运行所有测试用例:

gradle test
Run Code Online (Sandbox Code Playgroud)

或者您可以按如下方式运行特定测试

gradle test --tests your.package.TestClassName
gradle test --tests your.package.TestClassName.particularMethod
Run Code Online (Sandbox Code Playgroud)

如果您想了解更多信息,可以考虑--stacktrace, - info或--debug等选项.

例如,当您使用信息日志记录级别--info运行Gradle时,它将显示每个测试运行时的结果.如果有任何异常,它将显示堆栈跟踪,指出问题所在.

gradle test --info
Run Code Online (Sandbox Code Playgroud)

如果您想查看整体测试结果,可以在浏览器中打开报告,例如(在Ubuntu中使用Google Chrome打开它):

google-chrome build/reports/tests/index.html
Run Code Online (Sandbox Code Playgroud)

蚂蚁方式

设置Ant构建文件build.xml后,可以从命令行运行JUnit测试用例,如下所示:

ant -f build.xml <Your JUnit test target name>
Run Code Online (Sandbox Code Playgroud)

您可以按照以下链接阅读有关如何在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
Run Code Online (Sandbox Code Playgroud)

然后运行您的测试用例.例如:

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
Run Code Online (Sandbox Code Playgroud)


ran*_*acs 51

@lzap给出的答案是一个很好的解决方案.但是,我想补充一点,你应该添加.到类路径,以便不会遗漏当前目录,从而导致您自己的类被省略.这在某些平台上发生在我身上.所以JUnit 4.x的更新版本将是:

java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Run Code Online (Sandbox Code Playgroud)

  • @panny它是Windows上的分号.在n*nix环境中(至少OSX和我使用的所有Linux发行版)你使用冒号. (14认同)

Gis*_*shu 22

确保JUnit.jar在您的类路径中,然后从控制台调用命令行运行器

java org.junit.runner.JUnitCore [测试类名]

参考:junit常见问题

  • 您还需要设置项目的其余类路径. (4认同)
  • 即使[测试类名]在类路径中,这也会给出“找不到类:[测试类名]”。 (2认同)

Ste*_*ker 19

使用JUnit 4.12,以下内容对我不起作用:

java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Run Code Online (Sandbox Code Playgroud)

显然,从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]
Run Code Online (Sandbox Code Playgroud)


rog*_*lad 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代表类路径,dot(.)代表现有的类路径,而半冒号(;)将附加的给定jar附加到类路径,如上例所示,junit-4.8.2现在可用于类路径中以执行JUnitCore类这里我们用来执行我们的测试类.

上面的命令行语句可以帮助您从命令提示符(即MSDos)执行junit(版本4+)测试.

注意:JUnitCore是执行junit测试的外观,这个外观包含在4个以上版本的junit中.


小智 6

如果您的项目是基于 Maven 的,您可以使用以下命令运行属于模块“my-module”的测试类 CustomTest 中的所有测试方法:

mvn clean test -pl :my-module -Dtest=CustomTest
Run Code Online (Sandbox Code Playgroud)

或者使用下一个命令从测试类 CustomTest 仅运行 1 个测试方法 myMethod:

mvn clean test -pl :my-module -Dtest=CustomTest#myMethod
Run Code Online (Sandbox Code Playgroud)

要获得此功能,您需要 Maven Surefire Plugin v.2.7.3+ 和 Junit 4。更多详细信息如下:http: //maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html


Ind*_*eel 5

实际上你也可以让Junit测试成为一个可运行的Jar,并将runnable jar称为java -jar

  • 在Eclipse中,右键单击您的JUnit项目 - >单击Export - > Choose Java-> Runnable Jar File (2认同)