如何在最新 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);
}
在功能文件中我有以下内容(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);
}