Я бы пошел по пути АОП:
Прежде всего вам нужен javax.validation совместимый валидатор ( Hibernate Validator - эталонная реализация).
Теперь создайте аспект aspectj, который имеет экземпляр Validator и проверяет все параметры метода на наличие ошибок валидации.Вот краткая версия, с которой можно начать:
public aspect ValidationAspect {
private final Validator validator;
{
final ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
}
pointcut serviceMethod() : execution(public * com.yourcompany**.*(..));
before() : serviceMethod(){
final Method method = (Method) thisJoinPoint.getTarget();
for(final Object arg : thisJoinPoint.getArgs()){
if(arg!=null) validateArg(arg,method);
}
}
private void validateArg(final Object arg, final Method method) {
final Set<ConstraintViolation<Object>> validationErrors = validator.validate(arg);
if(!validationErrors.isEmpty()){
final StringBuilder sb = new StringBuilder();
sb.append("Validation Errors in method ").append(method).append(":\n");
for (final ConstraintViolation<Object> constraintViolation : validationErrors) {
sb.append(" - ").append(constraintViolation.getMessage()).append("\n");
}
throw new RuntimeException(sb.toString());
}
}
}
Используйте aspectj-maven-plugin , чтобы встроить этот аспект в свой тестовый и / или производственный код.
Если вам нужна только эта функциональность для тестирования, вы можете поместить выполнение аспекта-плагина в профиль.