2016-04-07 4 views
1

フラグメントに描かれたボタンの存在を確認したい。ボタンの表示と存在は、Retrofitで行われたネットワークの呼び出し/応答に依存します。エスプレッソテストでネットワークコールに依存するボタンを待つ

非同期性のため、私はIdlingResourceと一緒に行かなければならないと思った。私の問題は、本当にの応答が良いかどうかわからないことです。isIdleNow()です。 findElementById(R ..)で要素の保留を取得するか、これらの待機アサーションを実行する他の典型的な「エスプレッソの方法」がありますか?

編集:

while (timeout-- > 0) { 
    try { 
     onView(withId(element)).check(matches(isDisplayed())); 
    } catch (AssertionError ae) { 
     MiscUtil.sleep(1000); 
     continue; 
    } 
    return true; 
} 

しかし、私は、これはエスプレッソのファンダメンタルズに応じてではないと思います。

現在のソリューションは、IdlingResourceせずに単にです。 IdlingResource実装からのcheck-matches呼び出しを行うと、何らかの理由ですべてのスレッドが中断されました。

答えて

1

あなたがレトロフィットを使用している場合は、答えられない場合、私はあなたがOKHttp使用していると推定されますあなたはOKHttp使用する場合

(あなたは自分のネットワーク運用のためのアイドリングリソースを記述する必要があります。)

同様であろう素敵はここにリソースをアイドリングボックスの外にあります:あなたのテストのセットアップで https://github.com/JakeWharton/okhttp-idling-resource

(あなたが短剣を使用している場合)ちょうどあなたのokhttpクライアントを注入し、リソースを登録(DONTは涙でダウン登録を解除するのを忘れ)。

あなたのボタンの表示と表示は自動的に魔法のように待たれます。

サイドノート: あなたの意見をアニメーション化する際には、インストルメンテーションテストで最も大きな敵であることに注意してください。アニメーションを無効にすることを忘れないようにしてください(特に、それらを無効にする方法テスト実行中)。

関連する問題