我希望能够在java中将字符串从步骤映射到DTO中。
我发现我可以在我需要的每个步骤定义之前使用@Transform(DtoTransformer.class)
注释来做到这一点(例如 public void theDtoOfSomethingIs(@Transform(DtoTransformer.class) Dto currentDto) {...
(。这里的问题是我需要重复@Transform
并且不知道如何全局注册它。
我的另一个选择是使用 cucumber-expressions
,并使用它注册转换器:
ParameterType<Dto> dto= new ParameterType<>(
"dto",
"(\d+)",
Dto.class,
new SingleTransformer<>(s -> Dto.of(Integer.parseInt(s)))
);
ParameterTypeRegistry parameterTypeRegistry = new ParameterTypeRegistry(Locale.ENGLISH);
parameterTypeRegistry.defineParameterType(dto);
理论上,我应该能够使用这样的步骤定义@Given("^the dto of something is {dto}$");
.
这里的问题是这不起作用,因为我不知道如何注册ParameterTypeRegistry
被黄瓜自动拾取。
希望有人有使用这些东西的经验吗?
为此,您可以使用注册自定义 XStreamConverter 的功能。请查看以下 Cucumber-jvm 拉取请求中的示例:https://github.com/cucumber/cucumber-jvm/pull/1010。