Hibernate Validatorのドキュメントには、検証ルールのテストの概要を説明した簡単なスタートガイドがあります。
関連するチャンクは
@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がないかどうか疑問に思っています。