我想为一个使用spring框架的@async注释的异步函数编写一个测试用例。当我运行测试用例时,它由一个主线程而不是多个线程执行。我想通过多个线程运行异步功能。
我使用jmockit编写了测试用例。当我运行测试用例时,它由主线程执行。
Test Case:
@Test
public void applyOffers_ValidRequest_Success() {
final QuoteDetailBO quotesToBeProcessed = prepareQuoteDetailRequest();
new Expectations() {
{
grpOfferService.processOffer((QuoteDetailBO) any);
}
{
cpOfferService.processOffer((QuoteDetailBO) any);
}
};
final List<CompletableFuture<Void>> appliedOffers = new ArrayList<>();
Arrays.asList(1, 2, 3).stream().forEach(i -> {
appliedOffers.add(asyncCPGrpService.applyOffers(quotesToBeProcessed));
});
if (CompletableFuture.allOf(appliedOffers.toArray(new CompletableFuture[appliedOffers.size()]))
.isDone()) {
assertEquals(appliedOffers.size(), 3);
}
}
Code:
@Async
public CompletableFuture<Void> applyOffers(QuoteDetailBO quotesToBeProcessed) {
log.info("Calling GRP and CP for {}", quotesToBeProcessed);
grpOfferService.processOffer(quotesToBeProcessed);
cpOfferService.processOffer(quotesToBeProcessed);
return CompletableFuture.completedFuture(null);
}
我想测试异步功能是否在多个线程上运行。