package org.hibernate.validator.referenceguide.chapter03.parameterscriptassert; import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.util.Arrays; import java.util.List; import java.util.Set; import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.ValidatorFactory; import javax.validation.executable.ExecutableValidator; import org.junit.BeforeClass; import org.junit.Test; import org.hibernate.validator.constraints.ParameterScriptAssert; import static org.junit.Assert.assertEquals; public class ParameterScriptAssertTest { private static ExecutableValidator executableValidator; @BeforeClass public static void setUpValidator() { ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); executableValidator = factory.getValidator().forExecutables(); } @Test public void validateParameters() throws Exception { Car object = new Car(); Method method = Car.class.getMethod( "load", List.class, List.class ); Object[] parameterValues = { Arrays.asList( new Person() ), Arrays.asList( new PieceOfLuggage(), new PieceOfLuggage(), new PieceOfLuggage() ) }; Set<ConstraintViolation<Car>> violations = executableValidator.validateParameters( object, method, parameterValues ); assertEquals( 1, violations.size() ); Class<? extends Annotation> constraintType = violations.iterator() .next() .getConstraintDescriptor() .getAnnotation() .annotationType(); assertEquals( ParameterScriptAssert.class, constraintType ); } }