Когда я пишу модульные тесты для бизнес-кода, мне нужно имитировать вызовы асинхронных потоков и вернуть смоделированный результат для сохранения в базе данных. Я не знаю, как написать код модульного теста для этого метода.
Протестированный код выглядит следующим образом:
public void doWork(){
ExecutorService executor = Executors.newSingleThreadExecutor();
FutureTask<TestVO> futureResult = null;
futureResult = new FutureTask<TestVO>(new Callable<TestVO>() {
public TestVO call() {
return testService.scan(_scan_params, finalProcess, _ywid, _logPath);
}
});
executor.execute(futureResult);
TestVO testVO = futureResult.get(0, TimeUnit.SECONDS);
TestRepository.save(testVO);
}
Метод, над которым нужно издеваться, выглядит следующим образом:
@Async("taskAccStepExecutor")
public TestVO scan(String params, String process, String ywid, String LogPath) {
......
return testVO;
}
Я использовал testng / mokito в качестве среды тестирования в своем проекте.
Я ожидаю, что имитирую асинхронный поток и верну пользовательский testVO. Эта проблема беспокоит меня несколько дней, и я надеюсь получить вашу помощь.