【发布时间】:2014-06-02 06:33:57
【问题描述】:
我正在编写集成测试,在 UI 中执行操作,使用 Retrofit 启动网络调用。
我知道我需要实现一个CountingIdlingResource,但我想以正确的方式来做(如果已经完成,就不要重新发明轮子)。
是否有人在其应用的 Espresso 测试套件中实现了 IdlingResource 以等待网络请求执行?
更多信息here。
【问题讨论】:
-
我从未使用过 Retrofit,但是通过浏览他们的 API,当您在 AsyncTask 中执行 Client.execute 时,您不需要 IdlingResource,因为 AsyncTask 的线程池由 Espresso 监控。如果由于某种原因您不能使用 AsyncTask,您仍然可以通过 AsyncTask.THREAD_POOL_EXECUTOR.submit() 启动任务来从该线程池监控中受益。使用 IdlingResources 有很多(可解决的)陷阱,根据我的经验,最好尽可能少。
-
Retrofit 使用它自己的 Threadpool/Executor,它不使用 AsyncTasks。
IdlingResource必须在其中实现,我只是想知道其他人是否已经尝试/完成了这个。 -
我已经将自定义 IdlingResources 和 CountingIdlingResource 用于各种任务,包括网络请求。如果不了解更多关于 UI 操作如何启动请求以及如何处理响应/取消的信息,就很难给出具体的建议。要么使用链接示例中的修饰方法,要么实现一个简单的侦听器 API,测试类可以将 IdlingResource 连接到该 API,以了解何时等待网络请求完成以及何时完成或中止。
-
我正在寻找专门使用
Retrofit及其RestAdapter.Builder().setExecutor(...)方法实现此功能的人。如果我没有得到答案也没关系,但我会在编写自己的实现之前稍等片刻。 -
@AustynMahoney 我正在寻找完全相同的东西(推荐的方法),您的搜索有什么更新吗?
标签: android integration-testing retrofit android-espresso