我有这样的代码相匹配:如何检查是否异常的原因的异常类型
CompletableFuture<SomeClass> future = someInstance.getSomething(-902);
try {
future.get(15, TimeUnit.SECONDS);
fail("Print some error");
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
// Here I want to check if e.getCause() matches some exception
} catch (TimeoutException e) {
e.printStackTrace();
}
因此,当为ExecutionException被抛出时,它被另一个类另一个抛出异常。我想检查导致ExecutionException的原始异常是否与我创建的一些自定义异常匹配。我如何通过JUnit实现这一目标?
您可以使用'e.getCause()instanceof CustomException'。 http://stackoverflow.com/questions/7526817/use-of-instance-of-in-java – aturkovic
是的,但我想知道如果JUnit有一些办法做到这一点。因为如果我想检查多个异常,它很快就会变得丑陋。 'assertThat(e).isInstanceOf(IllegalArgumentException.class)'例如不再工作。我认为API已经改变。 –