我有两个黄瓜步骤定义,如下所示
Map<String, Object> values = new HashMap<>();
:
:
@And("^(.+) has a value (false|true)$")
public void addValues(String key, Boolean value) {
values.put(key, value);
}
@And("^(.+) has a value (.+)$")
public void addValues(String key, String value) {
values.put(key, value);
}
在第一步定义中,我想将值设置为boolean第二个定义中的值为String但是我得到了io.cucumber.core.runner.AmbiguousStepDefinitionsException
语句
Given name has a value Manu
And isMajor has a value true
:
:
有人能告诉我如何区分步骤定义与相同的语句,但有不同的参数类型
我的黄瓜版本是6.8.1
修改如下:
^(.+) has a value (.+)$
:
^(.+) has a value ((?!true|false).+)$
这将消除歧义。
注:-改变后,你的整个类看起来像:
public class ClassicStepDefs {
Map<String, Object> values = new HashMap<>();
@And("^(.+) has a value ((?!true|false).+)$")
public void addValues(String key, String value) {
values.put(key, value);
}
@And("^(.+) has a value (false|true)$")
public void addValues(String key, Boolean value) {
values.put(key, value);
}
}
步骤isMajor has a value true
匹配两个正则表达式。所以Cucumber不知道该调用哪个方法。如果您使其他正则表达式匹配除true/false
以外的任何参数,则您的步骤定义不再含糊。
你也许可以用消极的眼光看待未来,但我将把它作为练习留给其他人。