Когда используется проверка?

Я просто хотел написать тест для класса 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("", "");

И я предположил некоторые исключения, но ничего.

  • Так есть ли способ проверить эти аннотации?
  • И когда запускаются эти проверки?

Возможный дубликат Как проверить аннотации валидации класса с помощью JUnit.

Andrew S 04.04.2018 15:01
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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. Или вы можете настроить валидатор для запуска исключений прямо перед отправкой данных в базу данных.

Другие вопросы по теме