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

问题描述 投票:0回答:2

我有一步

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

想要与方法重载使用相同的步骤。我怎样才能做到这一点?

overloading cucumber-jvm gherkin cucumber-java cucumber-serenity
2个回答
0
投票

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

Given I have a pass with: |hotel|

Given I have a pass

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


0
投票

这在黄瓜中不适用。在cucumber的github问题页面中,关于您的问题已经打开和关闭了很多问题。

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

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

}

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

}
© www.soinside.com 2019 - 2024. All rights reserved.