【发布时间】:2020-07-27 05:55:31
【问题描述】:
我正在尝试为我的 Open-API 自动生成的代码创建单元测试用例。我有一个date-time 格式,它在 API 中运行良好,但在我尝试设置 JUnit 测试用例时失败
JUnit 设置代码:
@BeforeEach
public void setUp() throws IOException {
MockitoAnnotations.initMocks(this);
requestDTO = objectMapper.readValue(TestData.TEST_JSON, RequestDTO.class);
}
TestData.TEST_JSON:
public static String TEST_JSON= "{\n" +
" \"name\": \"credit_application\",\n" +
" \"comments\": {\n" +
" \"id\": \"1\",\n" +
" \"userId\": \"21212\",\n" +
" \"taskId\": \"212\",\n" +
" \"time\": \"2010-07-17T02:49:58.564Z\",\n" +
" \"comment\": \"Hello world\"\n" +
" },\n" +
" \"id\": \"123\",\n" +
" \"version\": \"1.0\"\n" +
"}";
/*
{
"name": "credit_application",
"comments": {
"id": "1",
"userId": "21212",
"taskId": "212",
"time": "2010-07-17T02:49:58.564Z",
"comment": "Hello world"
},
"id": "123",
"version": "1.0"
}
*/
RequestDTO(Open-API 自动生成代码):
public class RequestDTO {
@JsonProperty("name")
private String name;
@JsonProperty("comments")
private CommentDTO comments;
@JsonProperty("id")
private String id;
// Constructors and Getters/Setters
}
CommentDTO(Open-API 自动生成代码):
public class CommentDTO {
@JsonProperty("id")
private String id;
@JsonProperty("userId")
private String userId;
@JsonProperty("taskId")
private String taskId;
@JsonProperty("time")
private OffsetDateTime time;
@JsonProperty("comment")
private String comment;
// Constructors and Getters/Setters
}
例外:
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `java.time.OffsetDateTime` (no Creators, like default construct, exist): no String-argument constructor/factory method to deserialize from String value ('2020-07-27T02:49:58.564Z')
date-time 用于应用程序代码,但不适用于 Junit 设置代码。
【问题讨论】:
标签: java datetime junit jackson openapi-generator