意式浓缩咖啡测试与永不落幕AsyncTask

问题描述:

我想在我的应用程序在真实条件下运行Espresso测试。问题是测试永远不会运行,因为Espresso无法检测到空闲状态以便将其事件注入队列。因此它会以已知的ASYNC_TASKS_HAVE_IDLED错误挂起和结束。意式浓缩咖啡测试与永不落幕AsyncTask

为什么会发生这种情况?

该应用程序使用SignalR库,它在应用程序启动时初始化。 "Library GitHub url"。该库创建多个长轮询连接,以便发送和接收来自服务器的所有类型的消息和事件。

这些连接与AsyncTaskclass url)实现,因为他们最终很少(当他们这样做,他们会立即重新启动),咖啡已经很少有机会来检测idle状态,并继续执行。

那么,是否有解决此问题的一些解决方法?因为这个,我真的*切换到UIAutomator吗?

注:

  • 禁用SignalR不是一个选项(试过,测试工作,但随后我错过了应用程序的点)
  • 嘲讽SignalR也不是一个选项。我想测试真实的数据。

谢谢你的时间。

我也有很多异步。我的应用程序的任务.. 所以我要做的就是:

  1. 注册闲置资源。
  2. 当我需要停止/等待时,使它成为假。
  3. 当我想继续时,就变成了真的。
  4. 但是当有很多的电话,这将无法正常工作。否则它在我的简单情况下工作正常。

@Before 
    public void registerIdlingResource() { 
     Utils.idle = true; 
     mIdlingResource = mActivityRule.getActivity().getIdlingResource(); 
     Espresso.registerIdlingResources(mIdlingResource); 

} 

----------------------------- 

@After 
    public void unregisterIdlingResource() { 
     if (mIdlingResource != null) { 
      Espresso.unregisterIdlingResources(mIdlingResource); 
     } 
    } 


------------------- 
signIn(); 
Utils.idle = false; 
onView(withId(R.id.ll_reports)).perform(click()); 
Utils.idle = false; 

方法中签后,我等到邮件页面加载。然后我点击我的布局ID为ll_reports。然后我再等待下一个我想要执行的任务。

+0

谢谢您的回复。空闲资源是在这种情况下遵循的常用路径之一,但不幸的是,我无法访问库的源,因此无法注册或取消注册空闲资源。 我认为从上面的案例没有适当的解决方案。 – bajicdusko