从命令行运行单个TestNG测试用例(TestClass.method)

时间:2019-02-28 15:41:30

标签: java testng

我正在尝试构建一个shell脚本,该脚本将允许我指定一个类名和方法名作为参数,并使用TestNG仅调用一个测试用例。

我构建了一个脚本,该脚本可以让我运行一个单独的组,并且可以正常运行,并且看起来像这样:

JAR=`(cd target && ls -1 test-*-jar-with-dependencies.jar)`
java \
  -jar target/$JAR \
  -testjar target/$JAR \
  -xmlpathinjar testng.xml \
  -groups [GROUP-NAME] \
  -excludegroups not-implemented,broken,manual

上面引用的.jar文件是使用mvn packagemaven-assembly-plugin<mainClass>org.testng.TestNG</mainClass>一起构建的,它对于执行整个测试组都很好。

我想更改-groups以运行单个测试用例,即单个测试类中的一个方法。看着docs,我尝试了以下操作:

JAR=`(cd target && ls -1 test-*-jar-with-dependencies.jar)`
java \
  -jar target/$JAR \
  -testjar target/$JAR \
  -xmlpathinjar testng.xml \
  -methods [CLASS.METHOD]

这只是尝试运行所有内容。在行之间读取时,听起来好像有一个testng.xml文件,-methods参数可能会被忽略,所以我尝试了:

JAR=`(cd target && ls -1 test-*-jar-with-dependencies.jar)`
java \
  -jar target/$JAR \
  -testname "Run Single Test" \
  -methods [CLASS.METHOD]

起初,我认为这可行。但是它没有运行单个测试方法然后停止,而是一次又一次地运行它。我没有让它运行来查看它运行了多少次,但是我猜测如果允许的话,它将对代码库中的每个测试用例执行一次。

我当前正在运行Java 1.8.0_111,TestNG 6.14.3。这是TestNG中的错误,还是我没有传递正确的命令行参数?

0 个答案:

没有答案