我有一个 Spring 项目,我使用 hibernate validator 并有一个使用以下代码的 Junit 测试类:
Set<ConstraintViolation<Rule>> constraintViolations = validator.validateProperty(myObject, "query");
assertEquals(1, constraintViolations.size());
但是,我发现这不是一个好的测试方法。我有一个 NotBlank 注释,该测试类检查它是否有效。但是,如果我放置任何其他违反的约束,constraintViolations.size()
将是 2
。
我的问题是:如何检查 NotBlank
是否违反?
最佳答案
您可以使用:
constraintViolation.getConstraintDescriptor().getAnnotation()
获取用于产生此违规的注释类型,然后将其与您期望的进行比较。
如果出现多次违规,您可能需要迭代集合。
所以,最后
assertTrue(isExpectedConstraintViolated(NotBlank.class, constraintViolations))
public boolean isExpectedConstraintViolated(Class<?> clazz, Set<ConstraintViolation<Rule>> constraintViolations){
for(ConstraintViolation<Rule> violaton: constraintViolations){
if(clazz.equals(violaton.getConstraintDescriptor().getAnnotation().annotationType())){
return true;
}
}
return false;
}
应该可以完成这项工作。
关于java - 检查是否违反特定约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21947796/