Cucumber 通过命令行使用 Cucumber 功能文件的标签对 gradle 项目执行测试

Cucumber Test execution for gradle project via command line using tags for cucumber feature files

我希望通过命令行使用特定功能标签为 gradle 项目执行黄瓜测试。

我正在使用的命令:gradle test -DCucumber.options="-tags @tagname"。 命令确实执行提到的标签。 我试过使用 gradle 测试 -DCucumber.options="-tags @tagname"gradle test。我没有发现这两个命令有任何区别。

gradle test -DCucumber.options="-tags @tagname" 执行此文件中提到的 Runtest.java 和标签,无论我通过命令行传递的功能标签是什么,例如:tagname.

Runtest.java

@RunWith(Cucumber.class)
@CucumberOptions(features = "src\test\resources\featurefiles", monochrome = true, plugin = {
        "com.eis.listeners.ExtentCucumberFormatter:" }, glue = {
                "com.adminconsole.stepdefs" },tags= {"@adminconsolelogin,@devicemanager,@certificatemanagement"} ,format = { "json:JsonReports/AdminConsole.json" })

所以这里我在Runtest.java中提到了三个标签。 现在,我不想 运行 设置所有标签,而是想通过命令行 运行 一个特定的标签。 命令:gradle test -DCucumber.options="-tags @adminconsolelogin",但 -DCucumber.options="-tags @adminconsolelogin" 部分不工作。

我正在寻找可以 运行 特定标签的解决方案,而不管 Runtest.java 中提到的标签是什么。更精确地通过命令行动态传递标签。

但是 -DCucumber.options="-tags @tagname" 无法通过命令行工作。 如果有人能为我提供正确的命令或策略或代码,我将不胜感激。如果以下命令有误:gradle test -DCucumber.options="-tags @tagname"请指正。

更新:对于 Cucumber 6,您需要提供以下声明:

test {
systemProperty "cucumber.filter.tags", System.getProperty("cucumber.filter.tags")

}

您必须在 gradle JVM 和派生的 JVM 之间桥接系统属性,才能使测试正常工作。来自问题#1346

test { 
    systemProperty "cucumber.options", System.getProperty("cucumber.options") 
} 

将其添加到您的 build.gradle,然后您可以在 command-line:

gradle test -Dcucumber.options="-tags @tagname"

你需要添加这个

test { 
systemProperty "cucumber.options", System.getProperty("cucumber.options") 

}

CLI 命令将是

gradle test -Dcucumber.options="--tags @tagName"