小编Leo*_*Leo的帖子

CompletableFuture可用性和单元测试

我正在学习java 8 CompletableFuture并最终得到了这个.

所有的拳头,您对这行代码有什么看法?我需要并行向不同服务发送请求,然后等待所有服务响应并继续工作.

//service A
CompletableFuture<ServiceAResponse> serviceAFuture = CompletableFuture.supplyAsync(
    () -> this.ServiceA.retrieve(serviceARequest), serviceAExecutorService
);

//service B
CompletableFuture<ServiceBResponse> serviceBFuture = CompletableFuture.supplyAsync(
    () -> this.ServiceB.retrieve(serviceBRequest), serviceBExecutorService
);

CompletableFuture.allOf(serviceAFuture, serviceBFuture).join();
ServiceAResponse responseA = serviceAFuture.join();
ServiceBResponse responseB = serviceBFuture.join();
Run Code Online (Sandbox Code Playgroud)

甚至代码都在做我想要的,我在测试代码所在的类时遇到了问题.我尝试使用Mockito并执行以下操作:

doAnswer(invocation -> CompletableFuture.completedFuture(this.serviceAResponse))
    .when(this.serviceAExecutorService)
    .execute(any());
Run Code Online (Sandbox Code Playgroud)

执行程序服务和服务响应在嘲笑,但测试永远不会结束,并且线程一直在等待这一行

CompletableFuture.allOf(serviceAFuture, serviceBFuture).join();
Run Code Online (Sandbox Code Playgroud)

我在这里缺少的任何暗示?谢谢!

java testing junit unit-testing mockito

10
推荐指数
2
解决办法
2万
查看次数

标签 统计

java ×1

junit ×1

mockito ×1

testing ×1

unit-testing ×1