Модульное тестирование метода блокируется бесконечно на CompletableFuture.join () - PullRequest
0 голосов
/ 24 января 2019

Я хочу использовать некоторые асинхронные CompletionStage операции в методе бизнес-логики, используя методы из класса CompletableFuture. Цепные звонки:

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

При написании модульных тестов для метода, который заканчивается приведенным выше фрагментом, я заметил, что модульный тест блокируется бесконечно. Я пробовал несколько подходов, чтобы обойти / избежать блокировки ( this является одним из них, @Mock -ing и @Spy -ing Executor -ing объект), но безрезультатно.

Есть несколько аспектов, которые ускользают от меня:

  • откуда берется блокировка? это из класса CompletableFuture или из Mockito?
  • почему блокировка выполняется только в модульном тесте, а не в методе обслуживания?

Использованные библиотеки:

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