我希望通过命令行使用特定的功能标签为 gradle 项目执行 cucumber 测试。
我正在使用的命令:gradle test -DCucumber.options="-tags @tagname"
命令确实执行提到的标签。
我曾尝试使用 gradle test -DCucumber.options="-tags @tagname"
和 gradle test
。我没有发现这两个命令有任何区别。gradle test -DCucumber.options="-tags @tagname"
:执行 Runtest.java 和这个文件中提到的标签,不管我通过命令行传递什么特征标签,例如:tagename。
运行测试
@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 和 fork 的 JVM 之间桥接系统属性,才能使测试正常工作。从问题 #1346 :test {
systemProperty "cucumber.options", System.getProperty("cucumber.options")
}
将其添加到您的 build.gradle 中,然后您可以在命令行上执行此操作:gradle test -Dcucumber.options="-tags @tagname"
关于gradle - 使用 cucumber 特征文件的标签通过命令行执行 gradle 项目的 cucumber 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56376470/