我正在为一个实现了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完成时完成,并且您模拟了似乎儿童期货不会完成的期货,这导致了经验行为。
也请尊重语言模型标准,如方法的命名约定等。