我使用 Cucumber 测试我的 Java 项目中的代码,所有这些都是在 IntelliJ IDEA 2022.1.4(Ultimate Edition) 中开发和运行的。
最初,我的测试是使用 Cucumber expressions 定义的,并且在@ParameterType
上运行良好:
@When("The {tester} does whatever")
public void testWhatever(Tester t) {
...
}
@ParameterType("abc|def|hgi")
public Tester tester(String testerName) {
return Tester.valueOf(testerName);
}
字符串
这种形式的测试工作得很好。
然后进一步开发测试,我必须将测试定义切换到 Regex,测试定义采用以下形式:
@When("^The (?'tester'abc|def|hgi) does whatever$")
public void testWhatever(Tester t) {
...
}
型
现在,测试在运行时无法将捕获的字符串转换为所需的类型。
在这种情况下,相关的嵌套异常是:Caused by: io.cucumber.cucumberexpressions.CucumberExpressionException: ParameterType {anonymous} failed to transform [abc] to interface com.acme.Tester
个Caused by: java.lang.IllegalArgumentException: Can't transform 'abc' to interface com.acme.Tester BuiltInParameterTransformer only support a limited number of class types Consider using a different object mapper or register a parameter type for interface com.acme.Tester
个
看起来我的自定义ParameterType
与数据的关联,通过{tester}
在 Cucumber expression 中工作,在 Regex 中被破坏。
我不知道该怎么做才能让它发挥作用。
我将非常感谢你们的任何帮助。
1条答案
按热度按时间guz6ccqo1#
要将正则表达式与参数类型匹配,正则表达式必须与参数类型的正则表达式匹配。举例来说:
字符串