我正在尝试在我的应用中在真实条件下运行Espresso测试。问题是测试永远不会运行,因为Espresso
无法检测到空闲状态,以便将其事件注入队列。因此,它会以已知的ASYNC_TASKS_HAVE_IDLED
错误挂起并结束。
为什么会这样?
应用程序正在使用SignalR
库,并在应用启动时初始化。 "Library GitHub url"。此库创建多个长轮询连接,以便向/从服务器发送和接收所有类型的消息和事件。
这些连接是使用AsyncTask
(class url)实现的,因为它们很少结束(当它们立即重新启动时),Espresso几乎没有机会检测到idle
状态并继续执行。
那么,这个问题是否有一些解决方法?我真的被迫切换到UIAutomator
吗?
注意:
感谢您的时间。
答案 0 :(得分:0)
我也有很多异步。我的应用上的任务.. 所以我所做的是:
@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点击我的布局。然后我再次等待我想要执行的下一个任务。