2016-07-18 6 views
6
にボタンを(クリックしてください())を実行

非アクティブ/問題を立ち往生ボタンを押し続けると、テストは実行され続けますが、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"))); 

はあなたの助けやアドバイスありがとうございました

答えて

6

私は同様の問題がありましたが、私の場合、表示されていないフラグメントにロードされたプログレスバーでした。そのプログレスバーは誤って却下されず、テストをブロックしていました。あなたが説明したように45秒後にテストが失敗したのと同じ結果が出ました。 要約すると、プログレスバーなどのUIスレッドでアニメーションが実行されていないことを確認してください。

+0

あなたの答えの@jeprubioいただきありがとうございます。ビューから円形のprogressBarを削除しようとしましたが、問題は解決しません。私も[Idle Resources](https://www.youtube.com/watch?v=uCtzH0Rz5XU)で作業してみましたが、動作させることはできません。他のアイデア? –

+0

私はそれを解決しました!テキストビューに別のアニメーションが続いていました。ご協力いただきありがとうございます。 –

0

ListViewを使用しているときに同じ問題が発生しました。

興味深いことに、私は手動で画面をスクロールしようとするとテストが再開することに気付きました。この行を追加すると問題が解決し、テストが再開されました。

onView(withId(R.id.myListView)).perform(swipeUp());

関連する問題