在将som Java步骤定义转换为Kotlin之后,我得到了“重复的步骤定义”。 Jenkins将以下步骤定义标识为重复项:
@Given("^that \"([^\"]*)\" is a case in city \"([^\"]*)\" to buy a specific house with code$")
fun theCaseIsACaseInCityToBuySpecificHouseWithCode(caseTag: String, city: String) {
@Given("^that \"([^\"]*)\" is a case in city \"([^\"]*)\" to buy a specific house$")
fun theCaseIsACaseInCityToBuySpecificHouse(caseTag: String = "case", city: String = "5035") {
Jenkins的错误消息声称:
cucumber.runtime.DuplicateStepDefinitionException:
Duplicate step definitions in void e2e.case.CreateCaseSteps
.theCaseIsACaseInCityToBuySpecificHouse(String,String)
in file:/tmp/workspace/EST_cases_PR-12432/e2e/cucumber/target/test-classes/
and
e2e.case.CreateCaseSteps.theCaseIsACaseInCityToBuySpecificHouse
$default(OpprettSakSteps,String,String,int,Object)
我也看到过与Java类似的问题,但我似乎想起了这个问题,即最后一个“$”缺失了,因此第二行将“等于”第一行。
有了Kotlin,这似乎是另一个问题。
有任何想法吗?周围似乎没有太多有关Cucumber和Kotlin的信息。
最佳答案
由于显然几乎没有人使用kotlin和 cucumber ,因此我将分享经过测试,测试和测试的发现:
cucumber 无法使用默认参数值处理步骤定义
我知道Cucumber无法使用默认参数值,但我不认为仅在其中使用默认值会导致看似完全虚假的错误(重复的步骤定义)。但是,确实如此。我有几个步骤定义方法,其他步骤定义方法也使用了这些方法。对于那些,具有默认参数值很有意义,并且可以创建更整洁的代码。但是,可惜,当涉及到 cucumber 时,它是行不通的。