Java 从Cucumber 1迁移到Cucumber 4后无法解析数据表

Java 从Cucumber 1迁移到Cucumber 4后无法解析数据表,java,cucumber,Java,Cucumber,我有两节课 class MyType { private MyInnerType myInnerType; private String name; private Integer number; } class MyInnerType { private String subTypeName; private String id; } 这两个类用于cucumber测试,该测试具有步骤定义: @Given("^the system has types$") pu

我有两节课

class MyType {
   private MyInnerType myInnerType;
   private String name;
   private Integer number;
}

class MyInnerType {
   private String subTypeName;
   private String id;
}
这两个类用于cucumber测试,该测试具有步骤定义:

@Given("^the system has types$")
public void types(List<MyType> myTypeList) {
     ....
}
使用Cucumber 1可以很好地使用此定义。看起来类型转换和内部类型转换是自动完成的

在将此代码迁移到cucumber 4之后,我开始出现如下错误:

Caused by: io.cucumber.datatable.CucumberDataTableException: 'java.util.List<com.mycompany.MyType>' could not transform
原因:io.cucumber.datatable.CucumberDataTableException:'java.util.List'无法转换
我做了一些谷歌搜索。显而易见的答案是为MyType和MyInnerType注册类型转换器。这听起来像是一个非常有用的功能被删除了一个新版本

我是否可以在不使用类型转换器的情况下使用自动分辨率的cucumber 4

这听起来像是一个非常有用的功能被删除了一个新版本

发件人:

Cucumber1.x和2.x使用一个名为XStream的库作为中心库 用于数据表转换的构建块。但是 XStream与Cucumber的结合并没有很好的文档记录,确实如此 不允许使用其他对象映射器(例如Jackson),因为 使域对象无法重用。因为XStream不是 与Java9兼容也是一个长期问题

--

我是否可以在不使用类型转换器的情况下使用自动分辨率的cucumber 4

您可以选择一个对象映射器框架(Jackson、XStream、Gson、ect)并将其安装为默认的数据表转换器。这将处理大多数用例

见:

尽管我不相信有任何对象映射器框架可以将映射转换为嵌套结构。你必须在那里找到一个不同的解决方案

这听起来像是一个非常有用的功能被删除了一个新版本

发件人:

Cucumber1.x和2.x使用一个名为XStream的库作为中心库 用于数据表转换的构建块。但是 XStream与Cucumber的结合并没有很好的文档记录,确实如此 不允许使用其他对象映射器(例如Jackson),因为 使域对象无法重用。因为XStream不是 与Java9兼容也是一个长期问题

--

我是否可以在不使用类型转换器的情况下使用自动分辨率的cucumber 4

您可以选择一个对象映射器框架(Jackson、XStream、Gson、ect)并将其安装为默认的数据表转换器。这将处理大多数用例

见:

尽管我不相信有任何对象映射器框架可以将映射转换为嵌套结构。你必须在那里找到一个不同的解决方案

Caused by: io.cucumber.datatable.CucumberDataTableException: 'java.util.List<com.mycompany.MyType>' could not transform