我有一个Spring项目,我使用了休眠验证器,并有一个使用以下代码的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 void isExpectedConstraintViolated(Class<?> clazz, Set<ConstraintViolation<Rule>> constraintViolations){
    for(ConstraintViolation<Rule> violaton: constraintViolations){
        if(clazz.equals(violaton.getConstraintDescriptor().getAnnotation().annotationType())){
            return true;
        }
    }
    return false;
}


应该做的工作。

09-26 04:17