非アクティブ/問題を立ち往生ボタンを押し続けると、テストは実行され続けますが、45秒経過するまではそれ以上進みません。テストは自動的に失敗します。一方、ログインは正常に行われます。エスプレッソテストは後ViewAnimator
コンテキスト:私は2つのフラグメントが並んでいるアクティビティを持っています。右側のフラグメントは、ユーザ名とパスワードEditTextsとログインボタンを処理します。このフラグメントは、ViewAnimatorと2つのLinearLayoutsを子ビューとして構築されています。最初のLinearLayoutには前述の要素があり、2番目の要素には他の要素があります。
これは、ログインボタンをクリックしたときにUIに何が起こるかです:
@Override
public void setUILoggingIn() {
spinnerLogin.setVisibility(View.VISIBLE);
loginButton.setEnabled(false);
loginButton.setText(R.string.logging_in);
usernameText.setEnabled(false);
passwordText.setEnabled(false);
}
サーバーで認証した後、これは私がUIを処理する方法である:
@Override
public void setUIAuthorized() {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
viewAnimator.showNext();
// elements on the first child of the ViewAnimator
loginButton.setEnabled(true);
spinnerLogin.setVisibility(View.GONE);
// elements on the second child of the ViewAnimator
sendMessageButton.setEnabled(true);
chatInputText.setEnabled(true);
}
});
}
エスプレッソテスト
ViewInteraction loginButton2 = onView(withId(R.id.login_button));
loginButton2.perform(click()); // Test gets stuck here.
loginButton2.check(doesNotExist()); // Never reached.
誰もがsuccesこの種のシナリオについてうっかりテストしますか? ViewAnimatorがいつ変化するのかを検出するだけで十分ですが、テストはクリックで止まってしまいます。
また:コードは前に示した前に、私はこのテストを実行すると、それは夢のように動作し、試験の開始はなかった。
ViewInteraction loginButton = onView(withId(R.id.login_button));
/** Failed login **/
loginButton.perform(click());
ViewInteraction snackBarTextView = onView(
allOf(withId(R.id.snackbar_text), withText("Login error"), isDisplayed()));
snackBarTextView.check(matches(withText("Login error")));
はあなたの助けやアドバイスありがとうございました
あなたの答えの@jeprubioいただきありがとうございます。ビューから円形のprogressBarを削除しようとしましたが、問題は解決しません。私も[Idle Resources](https://www.youtube.com/watch?v=uCtzH0Rz5XU)で作業してみましたが、動作させることはできません。他のアイデア? –
私はそれを解決しました!テキストビューに別のアニメーションが続いていました。ご協力いただきありがとうございます。 –