Hibernate Validator文檔有一個簡單的入門指南,概述了testing validation rules。測試驗證約束
相關的塊是
@Test
public void manufacturerIsNull() {
Car car = new Car(null, "DD-AB-123", 4);
Set<ConstraintViolation<Car>> constraintViolations =
validator.validate(car);
assertEquals(1, constraintViolations.size());
assertEquals("may not be null", constraintViolations.iterator().next().getMessage());
}
在我看來,一個相當模糊的路線,以測試是否NOTNULL違反約束。
我簡單的解決辦法是這樣的
public static <T> boolean containsConstraintViolation(
Set<ConstraintViolation<T>> violations, Class<?> constraint) {
for (ConstraintViolation<?> violation : violations) {
ConstraintDescriptor<?> descriptor = violation.getConstraintDescriptor();
if (constraint.isAssignableFrom(descriptor.getAnnotation().getClass()))
return true;
}
return false;
}
,讓我做的測試,如
assertTrue(ValidationUtils.containsConstraintViolation(violations, NotNull.class));
不過,我敢肯定,這將是從長遠來看,天真和我想知道是否沒有其他庫或API我錯過了協助單元測試的限制。