使用序列化验证数据类型是否正确

我在下面提供了一个 POJO,


@Setter

@Getter

public class OrderDto extends BaseDto {


    @JsonProperty( "products" )

    private final List<String> products;


    @JsonProperty( "basket_items" )

    private final List<BasketItemDto> basketItems;


    @JsonProperty( "timestamp" )

    @JsonDeserialize( using = JavaOffsetDateTimeDeserializer.class )

    @JsonSerialize( using = JavaOffsetDateTimeSerializer.class )

    private OffsetDateTime timestamp;


    @JsonProperty( "amount" )

    private BigDecimal amount;


    @JsonProperty( "shop_id" )

    private Integer shopId;


    ..........................


}

我想测试该timestamp字段是否是OffsetDateTime数据类型。


有可能吗?我该如何编写测试?


凤凰求蛊
浏览 98回答 2
2回答

ibeautiful

我想测试时间戳字段是否为 OffsetDateTime 数据类型。当然。这里有点猜测,但我认为你想要/打算做什么:编写一个单元测试,表明你的 POJO/DTO 中的注释按预期工作......解析一些 JSON 字符串时因此,这里的重点是:你寻找一些你认为有效的示例 JSON 数据然后编写一个单元测试,使用 jackson 将该 JSON 字符串反序列化为 DTO 类的一个实例然后你使用一个或多个断言来检查新创建的字段OrderDTO要添加更多背景信息:请记住,您只在此处定义了一个数据持有者对象。您的 DTO 没有任何您可以测试的行为。唯一值得在这里测试的是:当您new()在 Java 中执行此操作并手动填充此类 dto 的字段并序列化为 JSON 时,您可以检查字符串是否符合预期或者,如前所述,反过来:您可以对JSON 字符串进行硬编码,对其进行反序列化,然后验证/断言您期望的属性(基于您对传入 JSON 字符串的了解)确实出现在您的 dto中.最后:如果您没有合适的“输入”JSON 字符串,那么危险但有效的替代方法是:首先编写将已知对象序列化为 JSON 字符串的测试用例。然后反序列化该字符串,并确保反序列化的 dto 与您序列化的匹配。

慕工程0101907

你想在哪里/什么时候验证/测试它?您可以使用 bean 验证来验证 pojo 的字段。您也可以为此编写自己的验证器。如何进行 bean 验证:https://www.baeldung.com/javax-validation&nbsp;使用 spring 进行自定义 bean 验证的示例: https:&nbsp;//www.baeldung.com/spring-mvc-custom-validator
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java