1

私のアプリで実際の状態でエスプレッソのテストを実行しようとしています。問題は、Espressoがキューにイベントを注入するためにアイドル状態を検出できないため、テストが実行されないことです。したがって、既知のASYNC_TASKS_HAVE_IDLEDエラーでハングして終了します。エスプレッソのテストでAsyncTaskを終わらせない

これはどうしてですか?

アプリケーションはSignalRライブラリを使用しており、アプリの起動時に初期化されます。 "Library GitHub url"。このライブラリーは、サーバーとの間であらゆる種類のメッセージおよびイベントを送受信するために、複数の長いポーリング接続を作成します。

これらの接続はAsyncTaskclass url)で実装されていると、彼らはほとんど終了していない(と彼らが行うとき、彼らはすぐに再起動されている)ことから、エスプレッソはidle状態を検出し、実行を継続するために非常に少ないチャンスを持っています。

この問題の回避策はありますか?私は実際にUIAutomatorに切り替えることを余儀なくされましたか?

注:SignalRを無効

  • はオプションではありません(試してみました、テストは動作しますが、その後、私はアプリのポイントを逃しています)SignalRのモック
  • もオプションではありません。私は実際のデータをテストしたい。

ありがとうございます。

答えて

0

私はまた、多くの非同期を持っています。私のアプリ上のタスク。 私は何ですか:

  1. 登録アイドリングリソースです。
  2. 私は停止/待機する必要があるときにそれを偽にしました。
  3. 私が進めたいときはそれを真実にしました。
  4. しかし、多くの通話がある場合、これは機能しません。それ以外の場合は、私の単純なケースでうまく動作します。この方法では、符号の後

@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のレイアウトをクリックします。それから私は次の仕事を待っています。

+0

ご回答いただきありがとうございます。この場合、アイドルリソースは一般的なパスの1つですが、残念ながら、私はライブラリのソースにアクセスできません。したがって、アイドルリソースを登録または登録解除することはできません。 上記のケースが適切な解決策を持っていないと思います。 – bajicdusko

関連する問題