我正在尝试构建一个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 package
和maven-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中的错误,还是我没有传递正确的命令行参数?