我想从命令行运行JUnit测试用例。 我该怎么做呢?
当前回答
在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测试的facade,这个facade包含在junit的4+版本中。
其他回答
对于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+确实支持类路径中的glob,你可以这样做:
java -cp lib/*.jar:/usr/share/java/junit.jar ...
编写测试!:-)
@lzap给出的答案是一个很好的解决方案。然而,我想补充的是,你应该补充。到类路径,这样您的当前目录就不会被遗漏,从而导致您自己的类被遗漏。我在某些平台上就遇到过这种情况。所以JUnit 4的更新版本。X是:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
就我个人而言,我会使用Maven的JUnit运行器来实现这一点。
确保JUnit.jar在类路径中,然后从控制台中调用命令行运行器
java org.junit.runner.JUnitCore[测试类名]
参考:junit FAQ
如果你的项目是基于maven的,你可以使用下面的命令从属于模块'my-module'的测试类CustomTest中运行所有的测试方法:
mvn clean test -pl :my-module -Dtest=CustomTest
或者使用next命令只从测试类CustomTest中运行一个测试方法myMethod:
mvn clean test -pl :my-module -Dtest=CustomTest#myMethod
为了实现这个功能,你需要Maven Surefire Plugin v.2.7.3+和Junit 4。 更多详情请访问:http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html
推荐文章
- Hudson支持的JUnit XML格式规范是什么?
- 如何触发命令行PHP脚本的XDebug分析器?
- Maven命令行如何指向特定的settings.xml为单个命令?
- 比较JUnit断言中的数组,简洁的内置方式?
- 如何直接从测试驱动程序调用自定义的Django manage.py命令?
- 如何循环通过文件匹配通配符在批处理文件
- 如何重置笑话模拟函数调用计数之前,每次测试
- 我怎么能显示线在公共(反向差异)?
- Git显示“警告:永久添加到已知主机列表”
- 在Python Django中运行单元测试时,如何禁用日志记录?
- 用于双值的assertEquals的delta或epsilon参数的含义
- 在子目录中测试Golang
- 如何在文本文件中替换${}占位符?
- 如何在批处理文件中请求管理员访问
- Java的assertEquals方法可靠吗?