multithreading - 如何测试该方法等待异步调用完成
问题描述
我想确认一个方法在退出之前等待异步线程完成。
该方法看起来像这样:
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() 实际上什么也没做,我的测试仍然会通过(但也许我的测试应该假设它按预期工作,它确实如此)。有没有更好的方法来测试这个方法是否等待异步线程完成?
解决方案
推荐阅读
- r - 尝试在 ggplot() 中更改条形颜色时出错
- python - pyodbc 上 MS Access 的 DateDiff 函数给了我一个“参数太少错误”
- c# - 关闭窗口 C#
- python - flask-marshmallow 将日期时间序列化为 unix 时间戳?
- java - COSStream 已关闭,无法读取。也许其封闭的 PDDocument 已关闭?
- google-api - Google Calendar API 不返回共享日历
- android - 为什么将connectycube添加到android项目失败?
- google-sheets - 过滤器/匹配 - 未找到返回
- linux - Nginx 位置重写规则在 ELB 后面不起作用
- powershell - 将计算机列表导入 Powershell 以获取 OU