私はエスプレッソで簡単なテストをしています。そのうちの1つは、ビューをクリックしてダイアログが表示されているかどうかを確認することです。エスプレッソはダイアログが表示されて失敗するまで待つことはありません
私の問題は時にはうまくいくことがあり、時にはうまくいかないことです。ダイアログを確認する前にの睡眠をに入れておくと常にうまくいきます。使用していないソリューション睡眠?
onView(withId(R.id.forgot_password)).perform(click());
// only works if use Thread.sleep(ms) here
onView(withText(R.string.reset_password)).check(matches(isDisplayed()));
編集:
私は、静的なヘルパーとの対話を示したんだけど、簡素化がこれです。ここ
は私のコード(とてもシンプル)です。そして、私は途中でバックグラウンドタスクを実行していません。
最終TextInputDialog textInputDialog =新しい
TextInputDialog.Builder(context)
.setTitle(titleId)
.setInputType(inputType)
.setHint(hintId)
.setPreFilledText(preFilledText)
.setNegativeButton(R.string.cancel, null)
.setPositiveButton(positiveButtonId, onTextSubmittedListener)
.create();
textInputDialog.show(textInputDialog);
ありがとうございました!
私は睡眠が良い解決策ではない理由は分かりません。あなたは、一定の期間、そしてまさにそれが睡眠と同じことを待つことを望みます。 – MoGa
そのクリックイベントはすぐにダイアログを表示するか、バックグラウンドジョブを実行してダイアログを表示しますか? – azizbekian
thread.sleepはアンドロイドエスプレッソのテストでは良い解決策ではありません。通常は必要ありません。エスプレッソはメインスレッドが終了するまで待っていますので、ダイアログを待つ必要があります。ダイアログの表示方法を共有できますか? – stamanuel