Я предполагаю, что ConstraintViolationException будет основной причиной FunctionalException.В этом случае, чтобы проверить, что выброшенное исключение имеет желаемую причину, вы можете сделать что-то вроде
Executable executable = () -> comptabiliteManager.checkViolation(vViolations);
Exception exception = assertThrows(FunctionalException.class, executable);
assertTrue(exception.getCause() instanceof ConstraintViolationException);
Еще одним, возможно, более чистым решением будет использование AssertJ и его API.
Throwable throwable = catchThrowable(() -> comptabiliteManager.checkViolation(vViolations));
assertThat(throwable).isInstanceOf(FunctionalException.class)
.hasCauseInstanceOf(ConstraintViolationException.class);
Вам придется импортировать методы из класса Assertions из AssertJ:
import static org.assertj.core.api.Assertions.catchThrowable;
import static org.assertj.core.api.Assertions.assertThat;
Я рекомендую вам взглянуть на этот API, потому что в нем много беглых методов.