Android Expresso - 等待异步任务完成

问题描述:

我在操作栏上有一个微调屏幕。当用户更改微调器选项时,下面的列表将刷新适当的数据。只要用户更改微调器选项,活动就会产生一个异步任务。但是,当测试在列表中寻找特定帖子时,只要点击该选项,我的expresso测试就会失败。如果我添加睡眠,它可以正常工作并找到帖子。我如何让expresso测试等待那个异步任务?Android Expresso - 等待异步任务完成

使用get method for an AsyncTask这(从docs):

如有必要,等待计算完成,然后获取其结果。

应该是这样的:

try { 
    MyAsyncTask myTask = new MyAsyncTask(); 
    myTask.execute(myParamObject); 
    MyResultObject result = myTask.get(); 
} catch (CancellationException e) { 
    Log.e("TAG", e.getMessage(), e); 
} catch (InterruptedException e) { 
    Log.e("TAG", e.getMessage(), e); 
} catch (ExecutionException e) { 
    Log.e("TAG", e.getMessage(), e); 
} 
+0

谢谢,我会尽力的。我是撰写expresso测试的新手。在文档中,它提到“默认情况下,Espresso等待当前消息队列中的UI事件进行处理,并且默认AsyncTasks完成,然后再进入下一个测试操作”。 expresso如何知道一个异步任务已经在点击按钮时产生,并且在检查列表中是否存在条目之前需要等待它完成? – user1018916

+0

是啊,很难知道确切的原因,不知道你的测试是如何设置的。也许增加一些代码给你的问题将有助于任何未来的答案。 – petey