Как утверждать «Исключение B», когда выбрасывается «Исключение A: Исключение B»? - PullRequest
0 голосов
/ 08 мая 2019

Я хочу заявить, что при выполнении некоторого кода возникает определенное исключение (SSLHandshakeException).

assertThatThrownBy(() -> {
        // some code
    }).isInstanceOf(SSLHandshakeException.class);

Однако это не удается, поскольку трассировка ошибки говорит:

java.lang.AssertionError: 
Expecting:
  <javax.ws.rs.ProcessingException: javax.net.ssl.SSLHandshakeException:     Received fatal alert: handshake_failure>
to be an instance of:
  <javax.net.ssl.SSLHandshakeException>
but was:
  <"javax.ws.rs.ProcessingException: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

Проверкана ProcessingException будет работать, но является слишком общим.Мне нужно убедиться, что фрагмент кода завершается ошибкой из-за рукопожатия SSL.

Как я могу изменить его так, чтобы рассматривать «второе» исключение?

Ответы [ 2 ]

1 голос
/ 09 мая 2019

Вы можете просто использовать hasCauseInstanceOf .

1 голос
/ 08 мая 2019

A getCause() должно помочь в доступе к внутреннему исключению.

assertThatThrownBy(() -> {
        // some code
    }).getCause().isInstanceOf(SSLHandshakeException.class);
...