我正在使用 CompletableFuture Java8 类在 Java 中异步进行网络调用,特别是使用该supplyAsync()
方法。它工作得很好。我发现我可以使用CompletableFuture.completedFuture()
. 我想弄清楚的是如何对异步任务期间抛出异常(即 、 或 )的CompletionException
情况InterruptedException
进行单元测试(如果可能)。ExecutionException
https://www.baeldung.com/java-completablefuture是一个起点和有用的来源,但没有解决这个问题。
我的第一种方法无法编译:
final CompletableFuture<ResponseType> completableFutureException =
CompletableFuture.completedFuture(new InterruptedException());
我的第二种方法可预见地在运行时生成ClassCastException
: final CompletableFuture completableFutureException =
CompletableFuture.completedFuture(new InterruptedException());
java.lang.ClassCastException: java.lang.InterruptedException cannot be cast to ResponseType
听起来CompletableFuture<U> newIncompleteFuture()
Java9 中的方法也可能有所帮助 - 唉,我们暂时停留在 Java8 上。如果 Java9 能在这里帮助我,我仍然会很高兴知道。
正如我所说,我想弄清楚是否有一种合理的方法可以在 Java8 中对此进行测试(最好不使用 PowerMock,因为我们很难让它与 Gradle 很好地配合)。如果这真的不是单元测试的,我可以接受并继续。
相关分类