2017-07-26 48 views
4

我設置了一個Jenkins節點(在Mac OS X上)運行我的Android應用程序的測試測試。connectedAndroidTest失敗,「沒有連接的設備」,但我的儀器工程

我的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沒有檢測到正在運行的模擬器。

我已經制作了一個shell腳本來安裝APK並運行am instrument,但後者不會生成JUnit兼容的輸出。

因此,在做額外的工作之前,我想知道我該如何「修復」Gradle任務,以便它檢測到仿真器。 我也很樂意爲您提供進一步查明問題的建議,例如找出爲什麼Gradle任務在我的機器上工作。

回答

0

首先清理您的項目,然後重新創建一個Android模擬器,執行cmd commond adb start-service。如果再次失敗,您應該在市場中使用其他模擬器。

+0

如果您使用真實設備並面臨同樣的問題,那麼您會怎麼做? –

0

我正面臨完全相同的問題。 到目前爲止的任何提示?在我以前的ant腳本,以確保亞行連接到設備,以前我們要做到:

%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

我會嘗試這些命令並讓你知道。 –

相關問題