首页 > 解决方案 > 如何仅针对特定约束验证 DTO 而忽略另一个?

问题描述

想象一个案例我们有这样的 dto

@CheckUserDetailsNotNull
@CheckUserMobileValid
@CheckUserEmailValid
public class UserDto {}

当然,对于这些注释中的每一个,都有专用的约束验证器,例如对于@CheckUserMobileValidUserMobileValidator

因此,我将为UserMobileValidator编写一个单元测试,但在测试范围内,我只想检查@CheckUserMobileValid而不会触发其他验证器。这是一个简单的测试:

public class UserMobileValidatorTest {

private Validator validator;

@Before
public void setup() {
    validator = Validation.buildDefaultValidatorFactory().getValidator();
}
@Test
public void mobileShouldBeValid() {
    UserDto userDto = new UserDto();
    userDto.setMobile("062233442234");
    Set<ConstraintViolation<UserDto>> constraintViolations = validator.validate(UserDto);
    Assert.assertEquals("Expected validation error not found", 1, constraintViolations.size());
}

它工作得很好,但所有验证器都会被触发,有没有办法只触发UserMobileValidator

标签: javabean-validationhibernate-validator

解决方案


推荐阅读