0

我有一个活动 MainActivity,它由一个带有选项卡的 ViewPager 组成,用于在不同页面(片段)之间切换。在第一页(FragmentA,onResume())上,我执行一个 api 调用来获取数据并为该页面 onResume() 设置视图。这个页面可以被认为是我的主页,所有的动作都来源于此。

如果我使用 AsyncTask,Espresso 是否应该自动等待 - 一旦我启动 MainActivity - 从第一页片段进行的 api 调用完成?或者我是否需要针对这种情况实施 IdlingResource/Sleep?我不确定 FragmentStatePagerAdapters 和 ViewPagers 的线程是如何工作的。

这是测试这个的最好方法吗?我是否需要重构代码以从 MainActivity 而不是在片段中进行 api 调用等?

4

1 回答 1

0

事实证明,我并没有真正使用 AsyncTask 进行 api 调用。我正在使用 Retrofit 并具有以下内容:

    if (ActivityManager.isRunningInTestHarness()) {
        d(TAG, "Using AsyncTask thread pool executor!");
        adapter.setExecutors(AsyncTask.THREAD_POOL_EXECUTOR, new MainThreadExecutor())
               .build();
    } else {
        d(TAG, "Using nonAsyncTask thread pool executor!");
        adapter.setClient(new OkClient(getBaseClient()));
    }

ActivityManager.isRunningInTestHarness() 在执行 espresso 测试时没有像我预期的那样返回 true。删除 if 语句解决了我的问题。

于 2014-05-20T22:17:43.267 回答