我想我正在复制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
答案 0 :(得分:2)
我知道我对这个答案来说太晚了,但我今天遇到了同样的问题而且能够解决它。希望这个答案能帮助那些寻找解决这个问题的人。显然,在可选参数的情况下,它将空值传递给参数。
问题出现是因为您的方法有int
而不是Integer
。就我而言,我将int
更改为Integer
并在继续之前进行了空检查。这解决了这个问题。