Я просто хотел написать тест для класса User, чтобы проверить валидацию. Мне интересно, что ничто не проверяется как аннотированное.
@Entity
public class User {
@Id
@NotBlank
@Size(min = 2, max = 255)
private String username;
@NotBlank
@Column(length = 60)
private String password;
public User(String username, String password) {
this.username = username.trim();
this.password = password;
}
}
Сейчас пробую это:
User user2 = new User("admin", "");
User user3 = new User("", "test");
User user4 = new User("", "");
И я предположил некоторые исключения, но ничего.




So is there a way to test these annotations?
Да, вам нужен экземпляр javax.validation.Validator для выполнения проверки:
// obtain a validator
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
// do a test
Set<ConstraintViolation<User>> constraintViolations = validator.validate(user2);
Assert.assertEquals(0, constraintViolations.size());
And when are those validations fired up?
Они могут быть возбуждены на разных уровнях.
Например, Spring может интегрировать проверку на уровне контроллеров (когда приходит запрос) с помощью @javax.validation.Valid. Или вы можете настроить валидатор для запуска исключений прямо перед отправкой данных в базу данных.
Возможный дубликат Как проверить аннотации валидации класса с помощью JUnit.