当前位置: 首页 > 知识库问答 >
问题:

如何使Espresso测试继续进行而不等待asynctask完成?

松嘉颖
2023-03-14

在我的Android应用程序中--登录后,有一个静态同步任务可能会运行几分钟,并将数据拉入手机数据库。

正常情况下,用户可以在同步数据的同时继续使用该应用程序。但是espresso由于某种原因,它正在等待同步AsyncTask完全完成,然后才进入下一个屏幕,我如何告诉espresso继续而不等待?

谢谢

共有1个答案

楚硕
2023-03-14

正如文档中所述,对onview()的调用会等待当前没有AsyncTask执行任务的实例。然而,查看Espresso实现,您可以注意到Espresso查找andriod.os.asyncTask#thread_pool_executor(或其支持版本android.support.v4.content.ModernAsyncTask)的实例。因此,如果定义一个自定义执行器(尝试从AsyncTask实现中复制一个执行器),则可以以以下方式执行AsyncTask实例AsyncTask.executeOnExecutor(myCustomExecutor,params),并且Espresso不会挂起OnView()调用,因为正在运行AsyncTask

 类似资料:
  • 根据Espresso文档,检测测试应该自动等待完成。但它不起作用。我创建了这个简单的测试用例: 返回UI线程时测试应该失败,但它总是成功。这是测试的logcat输出: 正如您所看到的,测试在后台方法执行之前就已经完成了。我怎样才能让考试等待呢?

  • 问题内容: 我通过将操作拆分为可用的确切内核数来并行化操作,然后通过启动相同数量的AsyncTask,对数据的不同部分执行相同的操作。 我正在使用以并行化它们的执行。 我想知道每个线程何时完成其工作,以便结合所有结果并执行进一步的操作。 我能怎么做? 问题答案: 您还可以简单地将共享库中的计数器递减作为的一部分。由于在同一线程(主线程)上运行,因此您不必担心同步。 更新1 共享对象可能看起来像这样

  • 我有一个加载页面,我想在其中对不相关的信息执行两个网络请求(rxjava)。在这两个请求完成之前,我不想进入下一页,即使其中一个或两个都失败了。 > 使用zip将请求绑定在一起。有没有办法不必被迫使用双函数,也不必返回null? 请求A和B有一个。doOnNext和。多恩。如果其中一个返回错误,zip observable是否继续?zip订阅服务器是否也会返回错误? 这是最好的方法吗?

  • 问题内容: 我正在尝试在Node.js / Express中创建一个路由,该路由从两个查询中读取数据,然后基于来自查询的数据来增加计数。由于Node.js是异步的,因此在读取所有数据之前会显示总计。 我创建了一个简单的示例,以达到我目前正在做的事情 我不确定要等到两个功能都完成后才能打印总计,我该做什么。我是否需要创建一个自定义事件发射器来实现这一目标? 问题答案: 拥抱异步性: 或使用Promi

  • 我在ExecutorService中有一些可运行的线程,希望在以下时间后加入线程: 因为它在Runnable中调用自己,所以我不能关闭,因为它可能会阻止自己创建新任务。 如何在不关闭的情况下等待所有线程完成?有没有办法返回一个未来,这样我就可以使用未来::get()。

  • 我正在使用JavaScript处理图像。对于每个图像,我使用.toblob创建4个文件。问题在于.toblob是异步的,这样一个.toblob进程可以在其他进程完成时运行。await异步似乎不起作用。处理的图像数的计数器似乎不起作用,因为上一个图像可以处理,而前一个图像尚未完成。最后一个图像将计数器增加到图像数并触发保存。 我可以在最后一个图像上做一个setTimeout,但那只是在猜测最大时间。