我想从java代码运行黄瓜功能文件。
目前我们正在运行JUnit Runner
package com.compareglobalgroup.testscript;
import cucumber.api.CucumberOptions;
import cucumber.api.testng.AbstractTestNGCucumberTests;
@CucumberOptions(features = { "src/test/resources/feature/BB" }, glue = { "com.compareglobalgroup.stepdefs.BB",
"com.compareglobalgroup.cucumber.hooks" }, plugin = {
"json:cucumberreport/json/cucumberreport.json" }, tags = { ""
+ "@Test" })
public class TestRunnerBB extends AbstractTestNGCucumberTests {
}
我不想使用它,而是想使用java程序运行它,因为我想在运行时从命令行或jenkins传递标记。
答案 0 :(得分:6)
在包cucumber.api.cli
中调用Main类的静态main方法,该方法对应于从命令行运行黄瓜。
public static void main(String[] args) throws Throwable {
Main.main(new String[]{"-g", "classpath to step definition file", "Full path to feature file"});
// My stepdefinition is inside java package at cucumber.sample.test
// My feature file is inside src/test/resources/features/featurefile.feature
}
对于标签或插件等其他参数,请使用"-t","@Tags"
。 重要的是,要素文件路径必须是最后一个选项。
BTW - 在你的例子中,你正在使用TestNG黄瓜跑步者。
答案 1 :(得分:1)
我建议qaf-gherkin你不需要使用junit或其他跑步者。您只需指定步骤提供程序包和要运行的功能文件或目录。例如:
<test name="Gherkin-QAF-Test">
<parameter name="step.provider.pkg" value="com.qmetry.qaf.automation.impl.step.qaf" />
<parameter name="scenario.file.loc" value="resources/features" />
<classes>
<class name="com.qmetry.qaf.automation.step.client.gherkin.GherkinScenarioFactory" />
</classes>
</test>