相同的黄瓜小黄瓜步骤,但方法不同

时间:2019-02-19 12:36:28

标签: overloading cucumber-jvm gherkin cucumber-java cucumber-serenity

我迈出了一步

Given I have a pass
  |hotel|

Given I have a pass

一个运行有数据,一个运行没有数据。为了满足上述要求,我编写了两个函数:

@Given("^I have a pass$")
public void givenIhaveAPass() {

}

@Given("^I have a pass$")
public void givenIhaveAPass(DataTable table) throws Exception {

}

但是它给出了错误DefinitionTestSuite.initializationError DuplicateStepDefinition Duplicate

想要对方法重载使用同一步骤。我该怎么办?

2 个答案:

答案 0 :(得分:0)

我认为这是不可能的,因为匹配仅通过正则表达式完成,而不考虑参数。您可以只做两个

Given I have a pass with: |hotel|

Given I have a pass

并在您的两个java方法中将它们匹配。这样,您也可以给他们一个更清晰的名称。

答案 1 :(得分:0)

这不适用于黄瓜。在cucumber的github问题页面上,关于您的问题的问题太多了。

作为解决方案的一种,我可以建议以下方法。 使用(.*)时,您不必在调用步骤定义

时提供擦除字符串部分的任何参数。
@Given("^I have a pass(.*)$")
public void givenIhaveAPass() {

}

@Given("^I have a pass$")
public void givenIhaveAPass(DataTable table) throws Exception {

}