私はAndroidアプリをテストするためにEspressoを使い始めていますが、何か問題があります。私は通常の方法でフラグメントを置き換えボタンでの活動があります。私のテストではAndroid Espressoはフラグメントの読み込みを待たずに
public void onClick(View v) {
final FragmentTransaction t = getFragmentManager().beginTransaction();
t.setCustomAnimations(R.animator.fragment_slide_in_up, 0);
t.replace(R.id.fragment_container,
LogInFragment.newInstance(), LogInFragment.TAG)
.addToBackStack(LogInFragment.TAG);
t.commit();
}
を、私は新しいフラグメントで送信ボタンをクリックして、ちょうど新しいフラグメントが表示されていることを確認してください。
onView(withId(R.id.login_btn))
.perform(click());
Thread.sleep(500);
onView(withId(R.id.email_input))
.check(matches(isDisplayed()));
私はテストからThread.sleep()
を削除した場合、テストは私が活動コードからsetCustomAnimations()
を削除しても、失敗します。
すべてのアニメーションは、指示に従って携帯電話でオフになっています。私の理解では、エスプレッソはUIスレッドの状態を知っていて、すべてが準備が整うまで待つことになります。しかし、もし私がonView(withId(R.id.widgetOnNewFragment))
を実行すると、毎回爆発する。新しいフラグメントを表示するたびにThread.sleep(500)
を追加する必要があります。
何か不足していますか?私は私のテストコードに数十のThread.sleep()を追加する必要はないと思う。
IdlingResourceの使用 –