私は活動があります。それは多くの断片を取ることができます。まず、リストビューを持つMyFeedフラグメントが必要です。リストビューのモデルはネットワークから取得されます。リスト内の項目の1つをクリックすることができます。アイテムの1つをクリックすると、EndFragmentが表示されます。エンドフラグメントにはネットワークからのモデルも必要です。エスプレッソ:待機する多くの状況のアイドリングリソース
私は2つのアイドリングリソースが必要です。
これは私のテストシナリオです。
- リストビューのモデルは
- を取らされるまで待機リストビュー内の最初の項目をクリックします。
- EndFragmentが来て、EndFragmentで何かします。
ネットワークリクエストを待つ必要があるため、私はMyfeedListIdlingResourceを作成しました。
private class MyfeedListIdlingResource implements IdlingResource {
private ResourceCallback mResourceCallback;
@Override
public String getName() {
return MyfeedListIdlingResource.class.getName();
}
@Override
public boolean isIdleNow() {
boolean ready = mActivityRule.getActivity().myfeedListReady();
return ready;
}
@Override
public void registerIdleTransitionCallback(ResourceCallback resourceCallback) {
mResourceCallback = resourceCallback;
}
}
は、そして、これは私のテストコードです。(私はすでにMyfeedListIdlingResource上に登録されている)、このテストコードで
// step 1. Click first item in the listview. This brings Endfragment
onData(withValue("POST"))
.inAdapterView(withId(R.id.fm_listview))
.atPosition(0)
.perform(click());
// step 2. Click a view in EndFragment
onView(withId(R.id.btnComment)).perform(click());
、私はMyfeedListIdlingResourceを登録しているためステップ1がうまく渡されます。しかし、このエラーコードでは手順2で失敗します。
リソースcom.naver.android.pholar.StickerCommentTest $ MyfeedListIdlingResource isIdleNow()はtrueを返しますが、リソースがビジー状態からアイドル状態に移行したことを示すメッセージは送信されませんでした。
どうすればこのような状況に対処できますか? (私がThread.sleep()を使用している場合、テストコードはうまくいっています)
おかげ記載されているようIdlingResourceを使用しない方が良いです、あなたのテストの時間に基づいて、遅延を使用したい場合。私のリストはフッターとヘッダーで初期化されています。そして、それはネットワークからデータが受信されます。したがって、ネットワークからデータを受け取るまでThead.slpeep()またはIdle Resourceを使用しないと、エスプレッソはリストビュー項目を見つけることができません。 –