Я хочу проверить объект, используя проверку компонента в тесте JUnit. Настройка выглядит в порядке, но тест не проходит должным образом. Следовательно, похоже, что сущность не проверена должным образом.
Вот соответствующая аннотация JPA:
@Column(name = "mobile_numbers", table = STN)
private String smsRecipientMobileNumbers;
Столбец получает размер по умолчанию 255 символов (правильно применяется в базе данных).
Вот тест:
final Collection<String> recipients = new ArrayList<String>(2000);
for (int i = 0; i < 2000; i++) {
recipients.add("some mobile number");
}
objectUnderTest.setSmsRecipients(recipients);
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
violations = validator.validate(objectUnderTest, Default.class);
assertThat(violations, is(empty()));
}
Я ожидаю, что он потерпит неудачу, потому что smsRecipientMobileNumbers
намного превышает 255 символов, но он проходит.
Если я явно применяю ограничение размера в объекте, тест завершается неудачей:
@Column(name = "mobile_numbers", table = STN)
@Size(max = 255)
private String smsRecipientMobileNumbers;
Что я здесь делаю неправильно? Очевидно, что выбранный провайдер должен уметь правильно интерпретировать аннотации JPA. Валидатор — это экземпляр org.hibernate.validator.engine.ValidatorImpl
.