【发布时间】:2017-06-11 01:32:47
【问题描述】:
我正在学习 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();
即使代码在做我想做的事,我在测试代码所在的类时也遇到了问题。我尝试使用 Mockito 并执行以下操作:
doAnswer(invocation -> CompletableFuture.completedFuture(this.serviceAResponse))
.when(this.serviceAExecutorService)
.execute(any());
执行器服务和服务响应正在模拟,但测试永远不会结束,线程一直在等待这一行中的某些内容
CompletableFuture.allOf(serviceAFuture, serviceBFuture).join();
关于我在这里缺少什么的任何提示?谢谢!
【问题讨论】:
标签: java unit-testing testing junit mockito