Junit测试无限卡在CompletableFuture.allof().join上



我正在为一个实现了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 ?

你问了

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

提到的将来时态永远不会完成,即

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

实际上,CompletableFuture.allOf()返回一个新的CompletableFuture,并将在所有给定的CompletableFutures完成时完成,并且您模拟了似乎儿童期货不会完成的期货,这导致了经验行为。

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

最新更新