0

異なるページ (フラグメント) を切り替えるためのタブを持つ単一の ViewPager で構成されるアクティビティ MainActivity があります。最初のページ (FragmentA、onResume()) で、API 呼び出しを実行してデータを取得し、そのページ onResume() のビューを設定します。このページは、すべてのアクションが発生する私のホームページと見なすことができます。

AsyncTask を使用している場合、Espresso は、MainActivity を開始すると、最初のページ フラグメントから行われた API 呼び出しが完了するまで自動的に待機する必要がありますか? または、この状況で IdlingResource/Sleep を実装する必要がありますか? FragmentStatePagerAdapters と ViewPagers のスレッド化がどのように機能するかはわかりません。

これはこれをテストする最良の方法ですか?フラグメントではなく MainActivity から API 呼び出しなどを行うためにコードをリファクタリングする必要がありますか?

4

1 に答える 1

0

API呼び出しにAsyncTaskを実際に使用していなかったことがわかりました。私は 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() は、期待どおりにエスプレッソ テストを実行したときに true を返しませんでした。if ステートメントを削除すると、問題が解決しました。

于 2014-05-20T22:17:43.267 に答える