相同的黄瓜小黄瓜步骤但不同的方法
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 {
}
我有一步
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 {
}