当抛出“异常A:异常B”时,如何断言“异常B”?

时间:2019-05-08 15:15:25

标签: java exception assertj

我想断言在运行某些代码时会抛出某个异常(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 个答案:

答案 0 :(得分:1)

getCause()应该有助于访问内部异常。

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

答案 1 :(得分:1)

您可以简单地使用hasCauseInstanceOf