黄瓜 DuplicateStepDefinitionException
Cucumber DuplicateStepDefinitionException
我有两个功能文件:first/first.feature
和 second/second.feature
。
另外,我有两个步骤定义文件,分别在 package1
和 package2
中。
所以我可以 运行 使用特定的 glue
和 features
配置进行第一次(或第二次)功能测试。
但是如果我想要 运行 这两个功能,我会得到 cucumber.runtime.DuplicateStepDefinitionException
。
我能否创建这样的配置,使我能够 运行 我的所有功能测试?也许提供 glue
-feature
对(或地图?)。
顺便说一句,我用这个 gradle-cucumber-plugin。
这就是 Cucumber 的工作原理;所有步骤定义都将被加载并且不能包含重复项(否则,Cucumber 将如何知道要使用哪个)。将步骤定义绑定到特定功能实际上被认为是一种反模式:https://docs.cucumber.io/guides/anti-patterns/#feature-coupled-step-definitions
如果步骤实际上相同,请考虑合并您的步骤定义。如果它们实际上应该不同,请考虑对每个步骤使用不同的语言。
如果您确实有理由通过不同的步骤 运行 不同的特征(例如,一个针对 UI,另一个针对 API),您可以指定不同的 运行 不同配置的人和 运行 所有 运行 人 运行 所有测试。
我有两个功能文件:first/first.feature
和 second/second.feature
。
另外,我有两个步骤定义文件,分别在 package1
和 package2
中。
所以我可以 运行 使用特定的 glue
和 features
配置进行第一次(或第二次)功能测试。
但是如果我想要 运行 这两个功能,我会得到 cucumber.runtime.DuplicateStepDefinitionException
。
我能否创建这样的配置,使我能够 运行 我的所有功能测试?也许提供 glue
-feature
对(或地图?)。
顺便说一句,我用这个 gradle-cucumber-plugin。
这就是 Cucumber 的工作原理;所有步骤定义都将被加载并且不能包含重复项(否则,Cucumber 将如何知道要使用哪个)。将步骤定义绑定到特定功能实际上被认为是一种反模式:https://docs.cucumber.io/guides/anti-patterns/#feature-coupled-step-definitions 如果步骤实际上相同,请考虑合并您的步骤定义。如果它们实际上应该不同,请考虑对每个步骤使用不同的语言。
如果您确实有理由通过不同的步骤 运行 不同的特征(例如,一个针对 UI,另一个针对 API),您可以指定不同的 运行 不同配置的人和 运行 所有 运行 人 运行 所有测试。