在这里我将分享我是如何做到的:
首先为映射数据创建一个POJO:
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class TshirtInfo {
private String colour;
private String size;
@Override
public String toString() {
return "TshirtInfo [colour: " + colour + ", size: " + size + "]";
}
}
然后创建一个 DataTransformer 类将数据映射到 POJO:
public class DataTransformer implements TypeRegistryConfigurer {
public DataTransformer () {
this.map = new HashMap<>();
this.map.put("small", "S");
this.map.put("large", "L");
}
private Map<String, String> map;
@Override
public Locale locale() {
return Locale.ENGLISH;
}
@Override
public void configureTypeRegistry(TypeRegistry typeRegistry) {
typeRegistry.defineDataTableType(new DataTableType(TshirtInfo.class,
(Map<String, String> row) -> {
String colour = row.get("color");
String size = this.map.get(row.get("size"));
return new LoginInfo(colour, size);
}
)
);
}
}
终于使用它们了:
public class Stepdefs implements En {
public Stepdefs () {
Given("user wants to buy a T-shirt with the following attributes", (DataTable dataTable) -> {
System.out.println(dataTable);
List<TshirtInfo> infos = dataTable.asList(TshirtInfo.class);
System.out.println(infos);
.
.
.
.
// other parts of your code
}
输出如下:
| color | size |
| blue | small |
| black | large |
[TshirtInfo [colour: blue, size: S], TshirtInfo [colour: black, size: L]]
就是这样。