使用 gradle 运行集成测试时出现异常。我得到的例外是:com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of AbstractCommonDetails: abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type informationSummary 类对我试图反序列化的细节有以下注释:@Datapublic class Summary { @JsonTypeInfo(use = NAME, include = PROPERTY, property = "@type") @JsonSubTypes({ @JsonSubTypes.Type(value = CardDetails.class, name = "CARD") }) private AbstractCommonDetails details;}AbstractCommonDetails 如下所示:@Getter@Setterpublic abstract class AbstractCommonDetails { private Long id; public abstract String getPaymentMethod();}并且 CardDetails 具有注释和方法的@JsonTypeName("CARD")实现。@DatagetPaymentMethodObjectMapper 的配置和反序列化如下:new ObjectMapper().findAndRegisterModules().readValue(IOUtils.toString(inputStream, "UTF-8"), Summary.class);和示例 json:{ "details":{ "@type":"CARD", "amount":"10.00"}奇怪的是 - 将集成测试作为 Junit 测试运行成功,但是当使用gradlew test命令运行相同的集成测试时,它会失败,并出现前面提到的异常。可能是什么原因?
1 回答

慕森卡
TA贡献1806条经验 获得超8个赞
如果测试有效IDE
但无法正常工作,gradle
则意味着您需要查看gradle
配置。您使用Lambook
,因此您需要确保gradle
配置知道Lambok
注释。
添加回答
举报
0/150
提交
取消