JUnit 테스트에서 bean 유효성 검사를 사용하여 엔티티의 유효성을 검사하려고합니다. 설정 은으로 보이지만 테스트가 실패하지 않습니다. 따라서 엔티티가 올바르게 검증되지 않은 것 같습니다.JUnit에서 bean 유효성 검사 (JSR-303)를 올바르게 사용하는 방법은 무엇입니까?
@Column(name = "mobile_numbers", table = STN)
private String smsRecipientMobileNumbers;
열은 (데이터베이스에 올바르게 적용되는) 255 개 문자의 기본 크기를 가져옵니다
여기에 관련 JPA 주석입니다.
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
의 인스턴스입니다.
"선택적으로 DDL 문을 만들 때 제약 조건을 고려합니다."... 실제로는 이것이 필수적이라고 생각했습니다. 그렇지 않으면 나에게 이해가되지 않는다. –
"Bean 유효성 검사는 JPA 엔티티 (또는 기본 열 크기)를 고려하지 않습니다."... Hhmm, ok, 즉 크기 제한 위반은 유효성 검사기가 아닌 데이터베이스에서만 탐지됩니다. –