Документация по 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, которые мне не хватает, чтобы помочь в ограничениях модульного тестирования.