Espresso不应该等待异步任务完成。怎么样?

问题描述:

我有一个Android应用程序,其中点击活动A开始一个线程。我需要这个线程运行一段时间(2-3分钟),但我也可以在这段时间内导航到其他片段和活动。Espresso不应该等待异步任务完成。怎么样?

手动应用程序没有任何问题。但是我用浓咖啡自动化测试。我正在尝试线程启动的过程(不会很快死掉),但是我通过意大利咖啡的嘲弄点击导航到其他活动。我总是收到espresso正在等待并且ASYNC_TASK不空闲的错误。

我需要espresso才能看到这个并导航到其他屏幕。有没有办法做到这一点 ?

您可以使用IntentService,您可以在其中完成繁重的任务,并且所有内容都将在后台执行,而不仅仅是将UI线程留空,还可以在活动之间移动,只要您想要。

这是一个示例代码,a full example is avaiable as well

public class HeavyJobExecutor extends IntentService { 


    public HeavyJobExecutor() { 
     super("WhateverNameYouWant"); 
    } 

    @Override 
    protected void onHandleIntent(Intent intent) { 
     for (int i = 0 ;i < 100; i ++) { 
      try { 
       new URL("http://stackoverflow.com").openConnection(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

您可能也需要了解BroadcastReceiver,因为你可以用它们来检查你的意图服务的状态。

+0

但是,我已经在后台的异步任务上运行了HeavyJobExecutor。 我的问题是浓咖啡等待这完成,我不想要。 –

+0

我不确定用浓咖啡是否是正确的选择。我开始使用在设备级别工作的UIAutomator,它不关心应用程序线程。这是我工作的解决方法 –

+0

伟大的快乐编码 –