javaexceptionmockitojuniper

assertThrows multiple exceptions


Can anyone tell me how to use assertThrows with several exceptions?

for ex, here is a class:

 protected void checkViolation(Set<ConstraintViolation<EcritureComptable>> vViolations) throws FunctionalException {
    if (!vViolations.isEmpty()) {
        throw new FunctionalException("L'écriture comptable ne respecte pas les règles de gestion.",
                                      new ConstraintViolationException(
                                          "L'écriture comptable ne respecte pas les contraintes de validation",
                                          vViolations));
    }
}

and my testing method:

 @Test
void checkViolation(){
    comptabiliteManager = spy(ComptabiliteManagerImpl.class);
    when(vViolations.isEmpty()).thenReturn(false);

    assertThrows(  ConstraintViolationException.class, () ->comptabiliteManager.checkViolation(vViolations), "a string should be provided!");
}

I would like to match the method and throw ConstraintViolationException and FunctionalException altogether

Any idea?

Thanks


Solution

  • A single exception is thrown, and it's of type FunctionalException. The cause of this FunctionalException is a ConstraintViolationException.

    Assuming assertThrows is the JUnit 5 method, it returns the thrown exception. So you can simply get its cause and add additional checks on this cause.