cucumber + java :步骤Regex定义中断与@ParameterType的关联

nwo49xxi  于 2023-08-08  发布在  Java
关注(0)|答案(1)|浏览(93)

我使用 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 中被破坏。
我不知道该怎么做才能让它发挥作用。
我将非常感谢你们的任何帮助。

guz6ccqo

guz6ccqo1#

要将正则表达式与参数类型匹配,正则表达式必须与参数类型的正则表达式匹配。举例来说:

@When("^The (abc|def|hgi) does whatever$")
public void testWhatever(Tester t) {
    ...
}

@ParameterType("abc|def|hgi")
public Tester tester(String testerName) {
    return Tester.valueOf(testerName);
}

字符串

相关问题