@Test
public void exceptionIsReThrownAndLoggedAppropriately() {

    final String exceptionMessage = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
    final RuntimeException cause = new NullPointerException("Foo must not be null!");
    final RuntimeException exception = new IllegalStateException(exceptionMessage, cause);
    final String expectedLogMessage = MessageFormat.format(LOG_MESSAGE_PATTERN, CLASS_NAME);
    assertThatExceptionOfType(exception.getClass())
            .isThrownBy(() -> underTest.call(() -> {
                throw exception;
            }))
            .withMessage(exceptionMessage)
            .withCause(cause);
    Mockito.verify(logger).error(expectedLogMessage, exception);
}