首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cucumber-junit中动态传递cucumber选项?

在cucumber-junit中动态传递cucumber选项?
EN

Stack Overflow用户
提问于 2014-04-01 07:26:50
回答 4查看 7.2K关注 0票数 3

我知道@CucumberOptions是用来传递黄瓜期权的。但是,由于Java只允许内联常量的限制,使用@CucumberOptions相当麻烦。那么,在使用cucumber-junit时,有没有动态传递Cucumber选项的方法呢?非常感谢。

EN

回答 4

Stack Overflow用户

发布于 2015-11-18 07:48:42

这个问题现在已经很老了,但答案是肯定的。

例如,如果您使用的是maven,那么只需像这样添加它。

代码语言:javascript
复制
mvn test -Dcucumber.options="--tags @your_tag"

您可以在运行场景时以这种方式过滤场景。

希望这能有所帮助。

票数 5
EN

Stack Overflow用户

发布于 2016-12-12 19:31:49

正如前面提到的here,不依赖于TestNG和jUnit,而是尝试使用通用代码,并尝试根据您的需求创造最佳优势。根据需要添加更多选项。

代码语言:javascript
复制
  private void defaultRun() {
        List<String> arguments = new ArrayList<String>();
        rguments.add("featureFiles");
           String[] tags = tagsToExecute;
           for (String tag : tags) {
               arguments.add("--tags");
               arguments.add(tag);
           }
        arguments.add("--plugin");
        arguments.add(html);
        arguments.add("--plugin");
        arguments.add(json);
        arguments.add("--plugin");
        arguments.add(rerun);
        String[] gluepackages = gluePackage.split(",");
        for (String packages : gluepackages) {
            if (!packages.contains("none")) {
                arguments.add("--glue");
                arguments.add(packages);
            }
        }
        final String[] argv = arguments.toArray(new String[0]);
        try {
            executetests(argv);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

 public byte executetests(final String[] argv) throws InterruptedException, IOException {

        RuntimeOptions runtimeOptions = new RuntimeOptions(new ArrayList(Arrays.asList(argv)));
        MultiLoader resourceLoader = new MultiLoader(this.getClass().getClassLoader());
        ResourceLoaderClassFinder classFinder = new ResourceLoaderClassFinder(resourceLoader, this.getClass().getClassLoader());
        Runtime runtime = new Runtime(resourceLoader, classFinder, this.getClass().getClassLoader(), runtimeOptions);
        runtime.run();
        System.out.println(runtime.exitStatus());
        return runtime.exitStatus();

    }
票数 2
EN

Stack Overflow用户

发布于 2018-12-11 13:29:22

您可以在之前和之后使用多个Junit方法,每个方法都由您想要的特定标记(@mytag)执行。在每个方法中,您可以设置所需的条件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22774099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档