我知道@CucumberOptions是用来传递黄瓜期权的。但是,由于Java只允许内联常量的限制,使用@CucumberOptions相当麻烦。那么,在使用cucumber-junit时,有没有动态传递Cucumber选项的方法呢?非常感谢。
发布于 2015-11-18 07:48:42
这个问题现在已经很老了,但答案是肯定的。
例如,如果您使用的是maven,那么只需像这样添加它。
mvn test -Dcucumber.options="--tags @your_tag"您可以在运行场景时以这种方式过滤场景。
希望这能有所帮助。
发布于 2016-12-12 19:31:49
正如前面提到的here,不依赖于TestNG和jUnit,而是尝试使用通用代码,并尝试根据您的需求创造最佳优势。根据需要添加更多选项。
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();
}发布于 2018-12-11 13:29:22
您可以在之前和之后使用多个Junit方法,每个方法都由您想要的特定标记(@mytag)执行。在每个方法中,您可以设置所需的条件。
https://stackoverflow.com/questions/22774099
复制相似问题