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

same cucumber gherkin step but different methods

我有一步

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

想对方法重载使用相同的步骤。我该怎么做?

我认为这是不可能的,因为匹配仅使用正则表达式完成,并未考虑参数。你可以做两个

Given I have a pass with: |hotel|

Given I have a pass

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

此方法不适用于黄瓜。在 cucumber 的 github 问题页面中,关于你的问题有很多打开和关闭的问题。

作为变通解决方案,我可以建议以下方法。 当您使用 (.*) 时,您不必提供任何参数,只需 erase 在调用步骤定义时删除 'string' 部分:

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

}

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

}