黄瓜投掷错误中的可选参数

时间:2017-08-17 13:42:01

标签: java cucumber

我想我正在复制here的答案,但我仍然无法获得可选参数。这两个步骤是独立运行的,我只是想尝试将它们组合起来。

情景:

  

然后(〜/ ^设置超时(?:at(\ d +)(min | hr))?$ /){int duration,String units - >

适用于

  

并在30分钟设置超时

但不是为了:

  

并设置超时

会抛出此错误

  

groovy.lang.MissingMethodException:没有方法签名:CucumberTestSteps $ _run_closure56.doCall()适用于参数类型:(null,null)值:[null,null]         可能的解决方案:doCall(int,java.lang.String),findAll(),findAll()

我为'?:'和'?'尝试了几个其他随机位置没有运气。所有回归到该语法的网页搜索都应该有效。

Cucumber认为它是一个有效的测试,因为当我添加

  

然后(〜/ ^设置超时$ /)

它将其视为重复步骤

  

cucumber.runtime.AmbiguousStepDefinitionsException:✽。然后设置超时(test.feature:57)匹配多个步骤定义:     ^设置超时$ in CucumberTestSteps.groovy:1128     ^设置超时(?:at(\ d +)(min | hr))?$ in CucumberTestSteps.groovy:1148

1 个答案:

答案 0 :(得分:2)

我知道我对这个答案来说太晚了,但我今天遇到了同样的问题而且能够解决它。希望这个答案能帮助那些寻找解决这个问题的人。显然,在可选参数的情况下,它将空值传递给参数。

问题出现是因为您的方法有int而不是Integer。就我而言,我将int更改为Integer并在继续之前进行了空检查。这解决了这个问题。