0

从黄瓜的命令行()开始测试时是否可以定义/指定跑步者cucumber.api.cli.Main?我这样做的原因是我可以在 Jenkins 中生成 xml 报告并将结果推送到 ALM Octane。

我有点继承了这个项目,它使用 gradle 来做 ajavaexect和调用cucumber.api.cli.Main 我知道@RunWith(OctaneCucumber.class)在使用 JUnit runner + maven(或只有 JUnit runner)时可以这样做,否则该标签将被忽略。我有带有该标签的自定义运行器,但是当我运行时,cucumber.api.cli.Main我找不到使用它运行的方法,并且我的标签被忽略了。

4

1 回答 1

0

@Grasshopper 的建议并不完全奏效,但它让我朝着正确的方向前进。

我没有将代码添加为插件,而是通过创建一个副本来设法“破解/加载”辛烷值报告cucumber.api.cli.Main器,使用它作为运行 cli 命令的基础,并稍微更改run方法并在运行时添加插件。需要这样做是因为插件在其构造函数中需要相当多的参数。可能不是完美的解决方案,但它让我能够保持gradle最初的构建过程。

public static byte run(String[] argv, ClassLoader classLoader) throws IOException {
    RuntimeOptions runtimeOptions = new RuntimeOptions(new ArrayList<String>(asList(argv)));

    ResourceLoader resourceLoader = new MultiLoader(classLoader);
    ClassFinder classFinder = new ResourceLoaderClassFinder(resourceLoader, classLoader);
    Runtime runtime = new Runtime(resourceLoader, classFinder, classLoader, runtimeOptions);

    //====================Added the following lines ================
    //Hardcoded runner(?) class. If its changed, it will need to be changed here also
    OutputFile outputFile = new OutputFile(Main.class);
    runtimeOptions.addPlugin(new HPEAlmOctaneGherkinFormatter(resourceLoader, runtimeOptions.getFeaturePaths(), outputFile));
    //==============================================================

    runtime.run();

    return runtime.exitStatus();
}
于 2017-11-28T14:49:54.923 回答