【发布时间】:2022-12-03 07:06:59
【问题描述】:
我正在调用第三方 REST 端点。
索取样品
{
"body": {
"accountNumber": "12345"
},
"header": {
"username": "someusername",
"password": "somepassword"
}
}
我创建了 3 个 bean 类
我的请求.java
@Builder
@JsonDeserialize(builder = MyRequest.MyRequestBuilder.class)
public class MyRequest {
@JsonProperty("header")
private MyHeader header;
@JsonProperty("body")
private MyBody body;
}
我的身体.java
@Getter
@Builder
public class MyBody {
private String accountNumber;
}
我的Header.java
@Getter
@Builder
public class MyHeader {
private String username;
private String password;
}
我正在使用创建请求对象
MyBody body = MyBody.builder().accountNumber("12345").build();
MyHeader header = MyHeader.builder().username("someusername").password("somepassword").build();
MyRequest request = MyRequest.builder().body(body).header(header).build();
一切都按预期工作。 MyRequest.java 的代码覆盖率是 100%,但我的 MyBody.java 和 MyHeader.java 不是。 对于所有字段,我收到错误消息“测试未涵盖”。
通常我为 Response 对象添加 @Getter 和 @Setter。对于请求,我只是添加 @Builder 注释。 在这种情况下,如果我从 MyBody 和 MyHeader 中删除 @Getter,则第三方 REST 端点将获得空值。 看起来在将对象设置为 MyRequest.java 时调用了@Getter。但出于某种原因,它没有包含在我的测试用例中。
如何在没有 @Getter 的情况下完成这项工作,或者有没有办法用 @Getter 注释覆盖所有字段(帐号、用户名和密码)?任何帮助表示赞赏。
【问题讨论】:
标签: java spring-boot junit sonarqube lombok