【发布时间】:2017-02-18 14:23:58
【问题描述】:
我有这个代码:
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。 stackoverflow.com/questions/7526817/use-of-instance-of-in-java -
是的,但我想知道 JUnit 是否有办法做到这一点。因为如果我想检查多个异常,它很快就会变得丑陋。
assertThat(e).isInstanceOf(IllegalArgumentException.class)例如不再起作用。我认为 API 发生了变化。
标签: java unit-testing junit4 completable-future