为cucumber.api.cli.Main选择一个不同的跑步者?

时间:2017-11-27 09:05:51

标签: jenkins gradle cucumber cucumber-jvm hp-alm

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

我继承了这个项目并使用gradle来javaexect并致电cucumber.api.cli.Main 我知道在使用JUnit runner + maven(或只有JUnit runner)时可以使用@RunWith(OctaneCucumber.class)执行此操作,否则将忽略该标记。我有自定义转轮带有该标签,但是当我从cucumber.api.cli.Main运行时,我找不到使用它运行的方法,我的标签就会被忽略。

1 个答案:

答案 0 :(得分:0)

@Grasshopper建议什么并没有完全奏效,但它让我看起来正确的方向。

不是将代码添加为插件,而是设法" hack / load"辛烷值报告器通过创建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();
}