我有這樣的代碼相匹配:如何檢查是否異常的原因的異常類型
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已經改變。 –