Gradleで管理されたAndroidProjectのEspressoテストをGenymotionを使ってjenkinsでぐるぐる回すまで(長い)

image

Gradleで管理されたAndroidプロジェクトをJenkinsで動かすまで苦しんだのでまとめます。

環境

前提

Android StudioでEspressoのテストが

./gradlew connectedAndroidTest

で動いてるものとします。

諦めたこと

Android Emulator Plugin は諦めました。 なぜか以下のメッセージを出して途中で止まります。

android completed with result NOT_BUILT

動くこともある。動かないこともある。不安定過ぎるのでエミュレーターを断念。

Genymotionで代用

エミュレーターをGenymotionに置き換えました。 以下Genymotionをjenkinsで呼び出す流れ。

$ VBoxManage list vms

で作成済みのGenymotionのdeviceを表示します。こんな感じ。

"Nexus S - 4.3 - API 18 - 480x800" {209f5db1-6ec1-4dff-9f6f-515a6ece0123}

これのスナップショットを作っておきます。

$ VBoxManage snapshot "Nexus S - 4.3 - API 18 - 480x800" take "factory"

スナップショットができたら、Jenkinsの Item > Build > Execute shell に起動処理を設定します。

VBoxManage snapshot "Nexus S - 4.3 - API 18 - 480x800" restore "factory"
{GENYMOTION_DIR}/player --vm-name "Nexus S - 4.3 - API 18 - 480x800" &
sleep 60

他には、 Item > Source Code Management > Git >

Repository URL : リポジトリのURL
Branch Specifier : */develop とか

Item > User Gradle Wrapper >

Tasks : *connectedAndroidTest*

Item > Post-build Actions > Publish JUnit test result report >

Test report XMLs : **/build/androidTest-results/connected/*.xml

これで動くはずです。(きっと)

失敗例

参考

AndroidのCIに纏わる諸々の問題 – Rejasupoem

Use Genymotion with Jenkins for Android testing | Genymobile Blog