我正在使用junit和mockito为我的spring Boot 应用程序编写单元测试用例。现在,我还想为请求模型类编写测试用例,以根据业务需求实现至少90%的代码覆盖率。
请求模型类有id、revision、state三个字段。示例:如果请求体中的id字段为null或为空,或者长度小于8,则会给予错误,例如Id不应为null,Id大小应为8。
请求模型类代码如下。
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Request {
@NotNull(message = "{request.id.notNull}")
@Size(min=8, max=8, message = "{request.id.size}")
@Schema(type = "string", example="X1234567")
private String id;
@NotNull(message = "{request.revision.notNull}")
@Schema(type = "integer", example="0")
private Integer revision;
@NotNull(message = "{request.state.notNull}")
@Size(min=2,max=2, message = "{request.state.size}")
@Pattern(regexp="^(BB|Bb|bB|bb|MM|Mm|mM|mm)$", message= "{request.state.pattern}")
@Schema(type = "string", example="BB", allowableValues = {"BB","Bb", "bB", "bb", "MM", "Mm", "mM", "mm"})
private String state;
@Override
public String toString() {
StringBuilder details = new StringBuilder();
details.append("Id:"+this.id);
details.append(" revision:"+this.revision);
details.append(" state:"+this.state);
return details.toString();
}
}
如何为其编写测试用例或如何在单元测试中进行验证,并且还希望在单元测试中覆盖toString()方法?
1条答案
按热度按时间njthzxwz1#
为了测试验证,您启动Web层并发送一些带有错误的请求体,以便测试后端验证。阅读更多关于MockMvc的内容:https://spring.io/guides/gs/testing-web/
或者,您可以在不启动Spring上下文的情况下测试它,只需使用默认的验证器,如下所示:
这将允许您创建更快的测试并快速获得反馈。例如,您可以编写
@ParameterizedTest
s,其中您将指定inout(请求有效负载)和预期输出(约束违反消息)的组合。对于
toString()
,只需在返回的String上调用method和assert: