【发布时间】:2020-08-06 03:14:46
【问题描述】:
当我为业务代码编写单元测试时,我需要模拟异步线程调用并返回模拟结果保存在数据库中。我不知道如何为这个方法编写单元测试代码。
测试代码如下:
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);
}
需要mock的方法如下:
@Async("taskAccStepExecutor")
public TestVO scan(String params, String process, String ywid, String LogPath) {
......
return testVO;
}
我在项目中使用 testng/mokito 作为测试框架。
我的期望是模拟一个异步线程并返回一个自定义的 testVO。这个问题困扰了我好几天,希望能得到您的帮助。
【问题讨论】:
标签: java multithreading unit-testing asynchronous mockito