[英]In Cucumber-BDD Java, How to find out all CLASHING Step Definitions at once ? (without using them in a feature file)
下面的 X、Y 和 Z 是 3 个不同的 Java 包,其中包含 Cucumber BDD 步骤定义。
@CucumberOptions(
features = "classpath:features_for_XYZ",
glue = {"X", "Y", "Z"},
由于 X、Y 和 Z 是由不同团队开发的,因此存在 Step Def 冲突的可能性(即特征文件中的一个步骤可能与多个 Step Definition Java 函数匹配)。 目前只有当该步骤实际用于特征文件时才会检测到这种冲突。
“cucumber.runtime.AmbiguousStepDefinitionsException: ✽.And 以下 MN 事情发生 (a/c/d.feature:80) 匹配不止一个步骤定义:”
在特征文件中使用它们之前,有没有办法识别所有冲突步骤定义?
对于每个步骤定义,用与正则表达式匹配的文本替换正则表达式,然后查看它是否与任何其他步骤定义匹配。 您需要自己编写一个框架来执行此操作,因为在 Cucumber 中没有简单的方法(并且您需要小心,例如在另一个步骤将选择一个数字的地方编写文本;需要完成检查两种方式,我不认为替换可以自动化到彻底)。
唯一的其他方法是通过检查。
不过,我不确定你为什么要这样做。 我们在 BDD 中使用“应该”这个词的部分原因是因为系统“应该”做的事情会随着时间的推移而改变,“应该”比“必须”或“将”鼓励更多的质疑。 这意味着功能文件将发生变化,并且需要对其进行维护。 如果某个步骤时,它使用一个以上的步骤定义相匹配,它应该是足够的,在它的发现时间来改变它。
我很好奇你所面临的情况意味着它不是。
您可以通过根据场景描述的功能和上下文分离特征文件和步骤定义,并仅包含与相关上下文匹配的步骤来最小化这些冲突。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.