我们可以将单个cucumber步骤绑定到两个不同类中的两个不同方法吗

我们可以将单个cucumber步骤绑定到两个不同类中的两个不同方法吗,cucumber,gherkin,Cucumber,Gherkin,我的项目中有两个功能文件,其中一个步骤在这两个文件中很常见,但我需要调用两个不同的步骤定义函数,具体取决于编写步骤的文件 我们是否有任何配置来执行此操作?因此,如果我理解正确,您在cucumber中有一行代码需要执行两种不同的方法?就我所知,这是不可能的。Cucumber将继续告诉您有多个同名方法。-这是我从你的头衔中得到的 我从你的解释中得到的是不同的东西。因此,您有两个具有公共步骤的功能文件。一个要素文件从类文件A获取其步骤,另一个要素文件从类文件B获取其步骤 在这种情况下,您可以最好地扩展

我的项目中有两个功能文件,其中一个步骤在这两个文件中很常见,但我需要调用两个不同的步骤定义函数,具体取决于编写步骤的文件


我们是否有任何配置来执行此操作?

因此,如果我理解正确,您在cucumber中有一行代码需要执行两种不同的方法?就我所知,这是不可能的。Cucumber将继续告诉您有多个同名方法。-这是我从你的头衔中得到的

我从你的解释中得到的是不同的东西。因此,您有两个具有公共步骤的功能文件。一个要素文件从类文件A获取其步骤,另一个要素文件从类文件B获取其步骤


在这种情况下,您可以最好地扩展您的公共类,以便可以在任何功能文件中使用任何类文件中的任何代码。

我认为这是可能的唯一方法(但我不建议这样做),就是定义一些变量来跟踪您运行的场景。例如,您可以为每个场景添加一个标记

  @some_tag
  Scenario: This is scenario 1
    Given I do this thing

  @some_other_tag
  Scenario: This is scenario 2
    Given I do this thing
然后你可以创建一个跟踪的钩子

Before('@some_tag') do
  @this = "foo"
end

Before('@some_other_tag') do
  @this = "bar"
end
然后从步骤开始,根据@this var的值运行代码

Given(/^I do this thing$/) do
  if @this.eql? "foo"
    <do some code>
  elsif @this.eql? "bar
    <do something else>
  else
    <do other things>
end


这将有助于更好地描述测试实际上在做什么。

不,而且完全不同,我在两个文件中都有一个步骤conman,我想根据场景执行一个方法。Ex add 10 from math.feature应执行MathsStepDef.java中的方法,add 10 from operation substract.feature应执行SubstractStepdef.java中的方法请共享一些描述所需内容的代码。记住Cucumber会在任何定义的地方找到方法。一个场景中的两个步骤将触发两个方法调用。这些方法可以在两个不同的类中定义。
Given I do this Foo Thing
Given I do this Bar Thing