如何在最新 4.x 版本中将简单字符串传递给 cucumber-jvm stepdef

How to pass simple string to cucumber-jvm stepdef in latest 4.x version

在功能文件中我有以下内容(Joe 是我想传递给步骤文件的参数)

   Given Person name is Joe

在步骤文件中,我写道:

@Given("Person name is {string1}")
    public void personName(String name) {
        System.out.println("name=" +name);
    }

在实现TypeRegistryConfigurer的class中,我写了

typeRegistry.defineParameterType(new ParameterType<String>(
        "string1",
        "([^ ']*)",
        String.class,
        new Transformer<String>() {
            @Override
            public String transform(String s) throws Throwable {
                return s;
            }
        })
);

我无法使用 name={string} 定义 defineParameterType。我得到一个错误,它已经被定义,但是如果我在步骤中使用 {string}Given 是未定义的。 有更好的方法吗?

匹配字符串时,您的步骤必须将参数值括在引号(单引号或双引号)中(参见 https://cucumber.io/docs/cucumber/cucumber-expressions/#parameter-types

因此,将您的故事情节更改为:

Given Person name is "Joe"

然后你可以使用步骤定义:

@Given("Person name is {string}")
public void personName(String name) {
    System.out.println("name=" +name);
}