Когато пиша модулни тестове за бизнес код, трябва да се подигравам на извиквания на асинхронни нишки и да върна симулиран резултат, който да запазя в базата данни. Не знам как да напиша единичен тестов код за този метод.
Тестваният код е както следва:
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. Този проблем ме тревожи от няколко дни и се надявам да получа вашата помощ.