2016-09-02 14 views
3

onDraw()メソッドで行われているカメラの上にマスクがあり、上にあるナビゲーションケースのテストケースを記述していましたカメラの画面ですが、エラーが表示されるAndroidカメラインテントで画面を再ペイントすることでエスプレッソテストが失敗する

おそらくメインスレッドは妥当な時間内にアイドル状態にならなかったでしょうか?アニメーションや何かが絶えず画面を再描画することがあります。または、アクティビティが作成時にネットワークコールを行っていますか? threaddumpログを参照してください。 1472804618974.これらの数字は、あなたの活動は、イベントキューに

を占有される可能性があります同一の場合:あなたの活動の打ち上げ要求は1472804618974だったと今でキューがアイドルに行った最後の時間だった前に、あなたの参考のために最後の時間は、イベントキューがアイドルでした

私は既に既に述べたようにアニメーションを無効にしました https://google.github.io/android-testing-support-library/docs/espresso/setup/index.html

何が必要なのか分かりません。

答えて

1

は、私はすでにこの問題ではないので、アニメーションの投入が原因で発生

https://google.github.io/android-testing-support-library/docs/espresso/setup/index.html 上で既に述べたように、アニメーションをオフにしているが、理由の Espresso枠組みの文字: Espressoは、実際のアプリケーションコンテキストに依存します。 Android用

エスプレッソは、 完璧かつ迅速なテスト自動化フレームワークですが、それは一つの重要な制限があり - あなたは、テストコンテキストでのみ アプリの内部を操作することが許可されています。

  • アプリケーションプッシュ通知
  • 連絡先の同期テスト対象のアプリに他のアプリからのナビゲート
  • : 機能のようなアプリのテストを自動化することが可能ではないことを意味

モバイルデバイスから他のアプリを処理する必要があるため - 通知バー、連絡先、またはPeo PLEアプリなど

から:http://qathread.blogspot.com/2015/05/espresso-uiautomator-perfect-tandem.html

それはEspressoテストがUIスレッドに基づいており、メインスレッドが)(アイドル状態のときに待っていることを意味します。

おそらくメインスレッドは、妥当な時間内にアイドル状態にならなかったでしょうか?アニメーションや何かが絶えず画面を再描画することがあります。または、アクティビティが作成時にネットワークコールを行っていますか? threaddumpログを参照してください。参照のために、アクティビティー起動要求が1472804618974で最後にキューがアイドルになった前の時点で、イベント・キューがアイドルだった最後の時間は、1472804618974でした。これらの数値が同じ場合は、アクティビティーがイベント・キューを突き抜けている可能性があります。

これは、あなたのメインスレッドが実際にビジーであり、エスプレッソは新しい動作を実行できないことを意味します。フリーアイドリングリソースが実行されるのを待っています。

  • は、彼が他の言葉で、アクションを実行することができたときにエスプレッソを言うために、独自のカスタムEspresso IdlingResourceを書く::メインスレッドがアイドル状態とする準備ができているときIdlingResourceは、エスプレッソを伝えこれらのオプションを持ってこの問題を解決するには

    新しい行動を取る。私はあなたがAndroidのIntentを使用してCameraを実行しているので、それはあなたの実際のアプリケーションコンテキストに含まれていない、それはあなたのアプリに表示されていないと仮定しhttps://github.com/googlesamples/android-testing/issues/56

  • espresso LIBSからappcompatsupport-v4を除外します活動/断片。それが真である場合は、Espressoフレームワークと共にUiAutomatorを使用してみてください。読む:http://qathread.blogspot.com/2015/05/espresso-uiautomator-perfect-tandem.html

  • の代わりEspressoは、この制限なくRobotiumAppiumまたは他の計測フレームワークを使用してみてください。

すでに、私はEspressoRobotiumUiAutomatorに沿って使用していますので、それらの組み合わせで動作することを恐れてはいけません。

希望します。

0

私は私の問題を解決することができました。 連続呼び出しメソッドinvalidate()onDraw()から問題が発生していました。 代わりに私はそれをpostInvalidateDelayed()に置き換え、特定の条件(アニメーションのようなもの)についてはinvalidate()しか使用しませんでした。 これは助けになりました! :) スクリーンの再塗装を避けてください。

関連する問題