gpt4 book ai didi

java - 使用 Cucumber 数据表注册 LocalDateTime xstream 转换器

转载 作者:行者123 更新时间:2023-11-30 06:54:58 25 4
gpt4 key购买 nike

我在 Gherkin 文件中有以下数据表:

Given the system knows about the following equipments:
| SerialNumber | CreationDate |
| 1234A | 2016-05-17T08:41:17.970Z |
| 5678A | 2012-03-16T08:21:17.970Z |

以及java中以下匹配的步骤定义:

@Given("^the system knows about the following equipments:$")
public void theSystemKnowsAboutTheFollowingEquipments(List<Equipment> equipments) throws Throwable {
// step code...
}

使用 POJO Equipment.java :

public class Equipment {
private String equipmentId;
private LocalDateTime creationDate;

}

由于 cucumber 默认不支持 LocalDateTime 转换,因此我想注册我的自定义 xstream Transformer,以便在我的设备 POJO 中正确处理 LocalDateTime。有办法做到这一点吗?

最佳答案

假设您有权访问设备 POJO 的代码。您可以使用@XStreamConverter注释来注册您的XStream转换器类。

  1. 数据表中的列名和所需 POJO 中的字段需要匹配,以便 Cucumber 能够发挥其将列与相应字段匹配的魔力。

  2. 创建一个自定义 DTZConverter 类,为 DateTime 解析逻辑扩展 AbstractSingleValueConverter。请修改下面使用的模式。

public class DTZConverter extends AbstractSingleValueConverter {

@Override
public boolean canConvert(Class type) {
return type.equals(LocalDateTime.class);
}

@Override
public Object fromString(String dtz) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
return LocalDateTime.parse(dtz, formatter);
}
}
  • 使用 @XStreamConverter(DTZConverter.class) 注释creationDate 字段
  • public class Equipment {

    private String equipmentId;

    @XStreamConverter(DTZConverter.class)
    private LocalDateTime creationDate;


    @Override
    public String toString() {
    return "Equipment [equipmentId=" + equipmentId + ", creationDate="
    + creationDate + "]";
    }
    }

    关于java - 使用 Cucumber 数据表注册 LocalDateTime xstream 转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42027000/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com