我有这个代码:
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实现这一点?
3条答案
按热度按时间ghhkc1vu1#
像这样使用
ExpectedException
:5anewei62#
很简单,你可以使用"内置"的东西来解决这个问题(规则很好,但在这里不是必需的):
换句话说:把原因找出来;然后Assert任何需要Assert的内容(我使用了assertThat和is()匹配器;更多信息请参见here)
aydmsdu93#
如果您只是想检查异常原因的类型,可以非常容易地完成
假设我们期望SQLIntegrityConstraintViolationException是原因,那么当我们有Exception对象时,我们可以检查其原因的类类型,例如:
希望这有帮助!!