2014-02-22 23 views
1

我有一个Spring项目,我使用了Hibernate Validator并有一个使用下面的代码JUnit测试类:检查是否有特定约束冲突或不

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

assertEquals(1, constraintViolations.size()); 

不过,我看这是不是一个好测试方式。我有一个NotBlank注释和测试类检查它是否有效。但是,如果我将其他违反的限制条件设置为constraintViolations.size()将是2

我的问题是:如何检查NotBlank是否被侵犯?

回答

0

你可以使用:

constraintViolation.getConstraintDescriptor().getAnnotation() 

获得用于生产这种violatation然后将它与你所期望的比较注释的类型。

如果出现多次违规,您可能需要遍历集合。

那么,到底

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

应该做的工作。

+0

不,它会保存它们,你可以通过添加第二个注释来轻松测试它,例如。 NotBland to NotNull – zibi

+0

你可以考虑接受我的答案,如果它可以帮助你:) – zibi