2014-02-22 24 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