单元测试方法在CompletableFuture.join()上无限期地阻塞

时间:2019-01-24 05:17:27

标签: java unit-testing spring-boot mockito completable-future

我想使用CompletionStage类中的方法在业务逻辑方法中使用一些异步CompletableFuture操作。链接的呼叫为:

return CompletableFuture.runAsync(() -> firstOperation(), executor)
                        .thenRunAsync(() -> secondOperation(), executor)
                        .thenApplyAsync(none -> new MessageDTO("OK"), executor)
                        .join();

在为以上述代码片段结尾的方法编写单元测试时,我注意到单元测试无限期地阻塞。我尝试了几种方法来规避/避免阻塞(this是其中的一种,@Mock-ing和@Spy-Executor对象),但无济于事

有几个方面使我难以理解:

  • 阻塞来自哪里?是来自CompletableFuture类还是来自Mockito?
  • 为什么它仅在单元测试中阻塞而不在服务方法中阻塞?

使用的库:

  • Spring Boot v2.1.2和Spring Framework v5.1.4
  • Mockito v2.23
  • JUnit Jupiter v5.3.2

0 个答案:

没有答案