意式浓缩咖啡测试与永不落幕AsyncTask
问题描述:
我想在我的应用程序在真实条件下运行Espresso测试。问题是测试永远不会运行,因为Espresso
无法检测到空闲状态以便将其事件注入队列。因此它会以已知的ASYNC_TASKS_HAVE_IDLED
错误挂起和结束。意式浓缩咖啡测试与永不落幕AsyncTask
为什么会发生这种情况?
该应用程序使用SignalR
库,它在应用程序启动时初始化。 "Library GitHub url"。该库创建多个长轮询连接,以便发送和接收来自服务器的所有类型的消息和事件。
这些连接与AsyncTask
(class url)实现,因为他们最终很少(当他们这样做,他们会立即重新启动),咖啡已经很少有机会来检测idle
状态,并继续执行。
那么,是否有解决此问题的一些解决方法?因为这个,我真的被迫切换到UIAutomator
吗?
注:
- 禁用SignalR不是一个选项(试过,测试工作,但随后我错过了应用程序的点)
- 嘲讽SignalR也不是一个选项。我想测试真实的数据。
谢谢你的时间。
答
我也有很多异步。我的应用程序的任务.. 所以我要做的就是:
- 注册闲置资源。
- 当我需要停止/等待时,使它成为假。
- 当我想继续时,就变成了真的。
- 但是当有很多的电话,这将无法正常工作。否则它在我的简单情况下工作正常。
@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。然后我再等待下一个我想要执行的任务。
谢谢您的回复。空闲资源是在这种情况下遵循的常用路径之一,但不幸的是,我无法访问库的源,因此无法注册或取消注册空闲资源。 我认为从上面的案例没有适当的解决方案。 – bajicdusko