Junit Test 在 CompletableFuture.allof().join 上无限卡住

问题描述 投票:0回答:2

我正在为实现 CompletableFuture 的类编写 Junit 测试。我试图模拟这段代码,但测试无限地卡在

CompletableFuture.allOf(future1,future2).join();

我正在编写junit的课程:

class Sample{
  @Autowired
  Executor executor;

  /* 
  piece of code
  */
  void SampleMethod(request){

    /*
    some piece of code
    */
    CompletableFuture<Obj1> future1 = CompletableFuture.SupplyAsync(
      (Supplier<Obj1>) () -> {
      return someClass.someMethod;
    },executor);

    CompletableFuture<Obj2> future2 = CompletableFuture.SupplyAsync(
      (Supplier<Obj1>) () -> {
      return someClass.someMethod;
    },executor);

    CompletableFuture.allOf(future1,future2).join();

}

我的junit类看起来像这样:

class TestSample{
@Mock
Executor executor;

@Test 
void testSampleMethod(){

MockedStatic<CompletableFuture> mock1 = Mockito.mockedStatic(CompletableFuture.class);
mock.when(()->CompletableFuture.supplyAsync(any(),any())).thenReturn(completedFuture);
}
}

我是junit的新手。如何为此编写junit?

java spring spring-boot junit completable-future
2个回答
0
投票

你问了

测试无限地卡在 CompletableFuture.allOf(future1,future2).join() 上

提到的未来永远不会完成,即

CompletableFuture.allOf(future1,future2).join();

实际上

CompletableFuture.allOf()
返回一个新的
CompletableFuture
,并且当所有给定的 CompletableFutures 完成并且你嘲笑了子期货似乎不会完成的期货时,它将完成,这导致了所经历的行为。

还请尊重语言模型标准,例如方法的命名约定等。


0
投票

您找到解决方案了吗?

© www.soinside.com 2019 - 2024. All rights reserved.