我的目标:在测试中仅运行ValidatorOne。
验证类:
@ValidMyClass
public class MyClass{...}
主要验证者(Agregation注释):
@TypeValidation
@ValidatorOne
@ValidatorTwo
@Constraint(validatedBy = {})
public @interface ValidMyClass {...}
ValidatorOne测试:
private final Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
@Test
public void validate_with_validatorOne() {
MyClass myClass = new MyClass();
assertIsValid(myClass);
}
private void assertIsValid(Object o) {
Set<ConstraintViolation<Object>> violations = validator.validate(o, Default.class);
assertThat(violations, is(empty()));
}
当我运行测试时,它会运行两个验证器。
我尝试使用“groups”注释属性,但它不适用于agregated验证器。
注意:我不想在MyClass上使用两个验证器注释 - 它看起来不像agregation注释那样干净ValidMyClass。
你知道我问题的解决方案吗?
答案 0 :(得分:0)
我以简单的验证测试结束,如下所示:
@Test
public void simpleTest(){
ValidatorOneValidator validator = new ValidatorOneValidator(); //Class response for validation in ValidatorOne
MyClass myClass = givenAValidMyClass(); //Some fixture
validator.initialize(myClass.getClass().getAnnotation(ValidMyClass.class).annotationType().getAnnotation(ValidatorOne.class));
assertTrue(validator.isValid(myClass, null));
}
这是我只测试一个验证器而不调用附加到MyClass的所有其他验证器的方法。