检查特定约束是否违反

时间:2014-02-22 00:19:17

标签: java validation hibernate-validator

我有一个Spring项目,我使用了hibernate验证器并且有一个使用以下代码的Junit测试类:

Set<ConstraintViolation<Rule>> constraintViolations =  validator.validateProperty(myObject, "query");

assertEquals(1, constraintViolations.size());

但是,我发现这不是一种好的测试方法。我有一个NotBlank注释,测试类检查它是否有效。但是,如果我将任何违反constraintViolations.size()的其他约束设为2

我的问题是:如何检查NotBlank是否被违反?

1 个答案:

答案 0 :(得分:4)

您可以使用:

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;
}

应该做的。