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

时间:2010-02-10 08:07:32

标签: unit-testing command-line junit

我想从命令行运行JUnit测试用例。 我怎么能这样做?

12 个答案:

答案 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)

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

  

java org.junit.runner.JUnitCore [test class name]

参考:junit FAQ

答案 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)

  1. 创建新的 JUnit 测试文件。例如“Backup.java”。
  2. 从损坏的文件粘贴到新文件内容。
  3. “作为 JUnit 测试运行”新文件。
  4. 此后,旧文件也开始工作。
  5. 您可以删除“Backup.java”。