2017-07-26 10 views
4

私はAndroidアプリケーションの計測テストを実行しているJenkinsノード(Mac OS X上)を設定しています。connectedAndroidTestは「接続されていないデバイス」で失敗しますが、計測器の動作は

My Jenkinsプロジェクトは、Androidエミュレータを起動し、Gradleタスク:app:connectedAndroidTestを実行します。しかし、タスクは常に、時にはうまくテストを実行することができるという、不安定でしたが、時間のほとんどは、次のエラーで失敗する:いくつかの調査の後

:app:connectedAndroidTest FAILED 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':app:connectedAndroidTest'. 
> com.android.builder.testing.api.DeviceException: No connected devices! 

、私はそれを見つけた:

  • 問題はそのマシンでのみ発生します。私のマシン(別のMac OS X)では、タスクは常にAndroid Studioの内部と外部の期待どおりに機能していました。
  • 問題はJenkinsの外部で発生します。つまり、手動でエミュレータを起動し、コマンドラインからGradleタスクを実行します。
  • Jenkinsの出力で非標準ポートの使用に関する警告が出されたとしても、より一般的な5554-5555を使用していても問題が発生します。
  • adb devicesは、オンライン状態のエミュレータを示しています。
  • adb shell am instrumentでも問題ありません。

したがって、問題は、実行中のエミュレータが:app:connectedAndroidTestで検出されないということです。

APKをインストールしてam instrumentを実行するシェルスクリプトを半分作成しましたが、後者はJUnit互換の出力を生成しません。

追加作業を行う前に、エミュレータを検出するためにGradleタスクを "修復"する方法が不思議です。 さらに問題を特定するためのアドバイスも受けられます。私のマシンでGradleタスクがなぜ機能するのかを調べる。

答えて

0

最初にプロジェクトをクリーンアップし、Androidエミュレータを再作成し、cmdを実行します。adb start-service .ifもう一度フェイルすると、市場で他のエミュレータを使用する必要があります。

+0

実際のデバイスを使用して同じ問題に直面した場合はどうしますか? –

0

私は全く同じ問題に直面しています。 これまでのヒント?私の前のAntスクリプトでは、ADBは、デバイスに接続されていたことを確認するために、我々は何をするために使用:

%ANDROID_SDK%-current\platform-tools\adb.exe devices 
%ANDROID_SDK%-current\platform-tools\adb.exe root 
%ANDROID_SDK%-current\platform-tools\adb.exe devices 
%ANDROID_SDK%-current\platform-tools\adb.exe wait-for-device 

この方法で、我々は、デバイスがテスト中利用できるようになる保証しました。

+0

JUnitのレポートでも 'cAT'をエミュレートするBashスクリプトが完成しましたが、アプリがクラッシュした場合には報告はありません。あなたのコマンドは、エミュレータが起動した後、 'cAT'が実行される前に実行されなければならないと思いますか? –

+0

まあ、実際には実際のデバイスで使っています。私はこれらのコマンドを実行する前に、エミュレータが実行されている必要があります、はい。また、cATを実行する前に実行する必要があります。 あなたができることは、上記のコマンドを実行するタスクにdinamically依存するようにすることです。 – Jaime

+0

私はこれらのコマンドを試し、あなたに知らせるでしょう。 –

関連する問題