モニターのない MacOS Mini で Robotium UI テストを実行しようとしたときに、最初にこの問題に遭遇しました。UI の自動化を回帰テストに追加したいので、Robotium コードを追加して画面上の UI クリックをテストしました。Jenkins サーバーで発生するエラーは、solo.clickInList(X) が実行されたときです。
junit.framework.AssertionFailedError: AbsListView is not found!
[exec] at com.jayway.android.robotium.solo.Waiter.waitForAndGetView(Waiter.java:492)
[exec] at com.jayway.android.robotium.solo.Clicker.clickInList(Clicker.java:406)
[exec] at com.jayway.android.robotium.solo.Clicker.clickInList(Clicker.java:388)
[exec] at com.jayway.android.robotium.solo.Solo.clickInList(Solo.java:1081)
[exec] at com.cars.android.robotium.TestApplication.testSearch(TestApplication.java:29)
エミュレーターがそれを使用できるように、Jenkins が UI を偽造するために Xvnc プラグインが必要であることがわかりました。特定のジョブで「エミュレーターウィンドウを表示する」を必ずチェックしてください。これを行うと、現在このエラーが発生します。
/Applications/RealVNC/VNC\ Server.app :$DISPLAY_NUMBER -localhost -geometry 1280x1024 -depth 24 -SecurityTypes None
Jenkinsでこのエラーが発生しました
Starting xvnc
[workspace] $ "/Applications/RealVNC/VNC Viewer.app" :77 -localhost -geometry 1280x1024 -depth 24 -SecurityTypes None
FATAL: Cannot run program "/Applications/RealVNC/VNC Viewer.app" (in directory "/Users/Shared/Jenkins/Home/jobs/Android/workspace"): error=13, Permission denied
java.io.IOException: Cannot run program "/Applications/RealVNC/VNC Viewer.app" (in directory "/Users/Shared/Jenkins/Home/jobs/Android/workspace"): error=13, Permission denied