首页 > 解决方案 > 如何测试该方法等待异步调用完成

问题描述

我想确认一个方法在退出之前等待异步线程完成。

该方法看起来像这样:

public void methodToTest() {

    AsyncTaskExecutor executor = MyTaskExecutor.getInstance();
    MyTask asyncTask = new MyTask(); // implements Runnable
    Future<?> future = executor.submit(asyncTask);

    ...do something

    future.get();
}

我可以模拟异步任务以花费一定的时间,但这会减慢单元测试的速度。我可以验证 future.get() 是否被调用,但如果 get() 实际上什么也没做,我的测试仍然会通过(但也许我的测试应该假设它按预期工作,它确实如此)。有没有更好的方法来测试这个方法是否等待异步线程完成?

标签: multithreadingjunit

解决方案


推荐阅读