黄瓜 - 全局变换或表达



我希望能够在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。

最新更新