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

Execute one feature at a time during application execution

我就是这样使用空手道的;在应用程序执行期间,我从另一个来源获取测试文件,并根据获取的内容创建功能文件。

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

我的问题是使用

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

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

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

我考虑过在一个新文件夹中创建每个功能文件,这样我就可以指定一次只包含一个功能的文件夹的路径,但是 CucumberRunner.parallel() 接受 Class 和不是路径。

请问您有什么建议吗?

您可以通过 annotation:

将单个文件(甚至目录路径)显式设置为 运行
@CucumberOptions(features = "classpath:animals/cats/cats-post.feature")

我想您已经知道 Java API 可以一次处理一个文件,但您不会收到报告。

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

刚想到一个有趣的想法,为什么不生成一个特征,并在该特征中对所有生成的特征文件进行 calls。

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

如果以上都失败了,我会尝试复制其中的一些代码:https://github.com/intuit/karate/blob/master/karate-junit4/src/main/java/com/intuit/karate/junit4/Karate.java