Java 检查是否违反了特定约束
我有一个Spring项目,我使用hibernate validator,还有一个Junit测试类,它使用以下代码:Java 检查是否违反了特定约束,java,validation,hibernate-validator,Java,Validation,Hibernate Validator,我有一个Spring项目,我使用hibernate validator,还有一个Junit测试类,它使用以下代码: Set<ConstraintViolation<Rule>> constraintViolations = validator.validateProperty(myObject, "query"); assertEquals(1, constraintViolations.size()); Set constraintViolations=valid
Set<ConstraintViolation<Rule>> constraintViolations = validator.validateProperty(myObject, "query");
assertEquals(1, constraintViolations.size());
Set constraintViolations=validator.validateProperty(myObject,“查询”);
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;
}
assertTrue(isExpectedConstraintViolated(NotBlank.class,constraintViolations))
公共布尔值isExpectedConstraintViolated(类clazz,集constraintViolations){
对于(约束冲突违例:约束冲突){
if(clazz.equals(violaton.getConstraintDescriptor().getAnnotation().annotationType()){
返回true;
}
}
返回false;
}
应该做这项工作。您可以使用:
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;
}
assertTrue(isExpectedConstraintViolated(NotBlank.class,constraintViolations))
公共布尔值isExpectedConstraintViolated(类clazz,集constraintViolations){
对于(约束冲突违例:约束冲突){
if(clazz.equals(violaton.getConstraintDescriptor().getAnnotation().annotationType()){
返回true;
}
}
返回false;
}
应该执行这项工作。
不,这两个词都有,你可以通过添加第二个注释来轻松地测试它,例如NobBand,如果你能帮助我,你可以考虑接受我的答案:“不,它将保存它们两个,你可以通过添加第二个注释来简单地测试它,例如NobBand and nnull,你可以考虑接受我的答案,如果它对你有帮助的话: