Это было старое определение шага с использованием разделителя:
Код: Выделить всё
@Then("^there are error messages: \"(.*)\"$")
public void assertAllMessages(@Delimiter("; ") List messages) throws Exception {
// ...
}
Код: Выделить всё
@ParameterType("(?:.+;)+.+")
public List stringList(String raw) {
String[] values = raw.split(";");
return Arrays.asList(values);
}
Однако при запуске мой тест не пройден и указывает, что мне следует зарегистрировать тип параметра для списка:
Код: Выделить всё
Caused by: java.lang.IllegalArgumentException: Can't transform 'foo; bar; baz' to java.util.List
BuiltInParameterTransformer only supports a limited number of class types
Consider using a different object mapper or register a parameter type for java.util.List
at io.cucumber.cucumberexpressions.BuiltInParameterTransformer.createIllegalArgumentException(BuiltInParameterTransformer.java:114)
at io.cucumber.cucumberexpressions.BuiltInParameterTransformer.doTransform(BuiltInParameterTransformer.java:33)
at io.cucumber.cucumberexpressions.BuiltInParameterTransformer.transform(BuiltInParameterTransformer.java:22)
at io.cucumber.cucumberexpressions.RegularExpression.lambda$match$0(RegularExpression.java:66)
at io.cucumber.cucumberexpressions.ParameterType$TransformerAdaptor.transform(ParameterType.java:268)
at io.cucumber.cucumberexpressions.ParameterType.transform(ParameterType.java:233)
... 47 more
Я также пытался изменить регулярное выражение на просто @ParameterType(" .*"), но это не имело никакого значения.
Как мне заставить Cucumber использовать мой тип пользовательского параметра для преобразования строки в List?
- Junit 5.8.1 (с винтажным движком для поддержки 4)
- Cucumber-java и огурец-junit 6.10.4< /li>
OpenJDK 17
Подробнее здесь: https://stackoverflow.com/questions/694 ... ametertype
Мобильная версия