在应用程序执行期间一次执行一个功能

时间:2018-02-13 16:20:13

标签: karate

我正以这种方式使用空手道;在应用程序执行期间,我从另一个源获取测试文件,然后根据我得到的内容创建功能文件。

然后我遍历测试列表并执行它们。

我的问题是通过使用

CucumberRunner.parallel(getClass(), 5, resultDirectory);

我在每次迭代时执行所有测试,这会导致测试多次执行。

有没有办法在应用程序执行期间一次执行一个测试(我完全知道带有注释的空测试类来指定一个类,但这似乎不能在这里为我服务)

我考虑过在新文件夹中创建每个要素文件,以便我可以指定一次只包含一个要素的文件夹的路径,但CucumberRunner.parallel()接受Class而不是路径。

你有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您可以通过annotation显式设置单个文件(甚至目录路径):

@CucumberOptions(features = "classpath:animals/cats/cats-post.feature")

我认为您已经知道Java API一次只能获取一个文件,但您无法获取报告。

你可以尝试这个,设置一个值为cucumber.options的系统属性classpath:animals/cats/cats-post.feature,看看是否有效。如果添加标签(搜索文档),每次迭代都可以使用不同的标签,这将为您提供所需的行为。

有一个有趣的想法,为什么不生成单个功能,在该功能中,您可以call生成所有生成的功能文件。

此外,在完成每次迭代后,以编程方式删除(或移动)文件。

如果上述所有方法都失败了,我会尝试复制一些代码:https://github.com/intuit/karate/blob/master/karate-junit4/src/main/java/com/intuit/karate/junit4/Karate.java