私は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タスクがなぜ機能するのかを調べる。
実際のデバイスを使用して同じ問題に直面した場合はどうしますか? –