Cucumber-java не будет использовать пользовательский @ParameterTypeJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Cucumber-java не будет использовать пользовательский @ParameterType

Сообщение Anonymous »

У меня есть очень старый проект огурца-Java (версия 1.2.2), который я пытаюсь обновить, чтобы использовать текущую версию (6.10.4). По большей части все идет хорошо, но у меня возникли проблемы с преобразованием старого определения шага, в котором использовалась аннотация @Delimiter, для использования типа пользовательского параметра.
Это было старое определение шага с использованием разделителя:

Код: Выделить всё

@Then("^there are error messages: \"(.*)\"$")
public void assertAllMessages(@Delimiter("; ") List messages) throws Exception {
// ...
}
Поскольку @Delimiter был удален, когда поддержка XStream была удалена из огурца-java, в документации говорится, что его следует заменить на собственный @ParameterType. Справедливо. Я написал этот, которого должно быть достаточно, чтобы идентифицировать строковое представление списка, разделенного точкой с запятой, и преобразовать его в List:

Код: Выделить всё

@ParameterType("(?:.+;)+.+")
public List stringList(String raw) {
String[] values = raw.split(";");
return Arrays.asList(values);
}
А затем я удалил @Delimiter из определения шага, но оставил все как есть.
Однако при запуске мой тест не пройден и указывает, что мне следует зарегистрировать тип параметра для списка:

Код: Выделить всё

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

Я знаю, что он успешно выбрал тип моего пользовательского параметра, поскольку он находится в том же файле, что и определение шага. (Кроме того, если я создаю еще одну копию в другом месте в каталоге клея, он жалуется, что уже зарегистрирован тип параметра с именем «stringList».)
Я также пытался изменить регулярное выражение на просто @ParameterType(" .*"), но это не имело никакого значения.
Как мне заставить Cucumber использовать мой тип пользовательского параметра для преобразования строки в List?
  • Junit 5.8.1 (с винтажным движком для поддержки 4)
  • Cucumber-java и огурец-junit 6.10.4< /li>
    OpenJDK 17


Подробнее здесь: https://stackoverflow.com/questions/694 ... ametertype
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»