我想在不同的模擬器上運行詹金斯我的Android儀表測試。假設我有100個測試和4個模擬器,我想對每個測試運行25個測試。
我在詹金斯管道的並行執行./gradlew connectedDebugAndroidTest
4個模擬器
stage('Instrumented Tests') {
parallel(
emu1: {
runInstrumentedTestOnEmu(...)
},
emu2: {
runInstrumentedTestOnEmu(...)
}
...
)
}
connectedDebugAndroidTest
將爲了產生其他命令來設置環境運行儀表測試。
...
:app:transformNativeLibsWithMergeJniLibsForDebugAndroidTest
:app:processDebugAndroidTestJavaRes NO-SOURCE
:app:transformResourcesWithMergeJavaResForDebugAndroidTest
:app:validateSigningDebugAndroidTest
:app:packageDebugAndroidTest
:app:assembleDebugAndroidTest
:app:connectedDebugAndroidTest
而當環境已就緒,那麼它performes :app:connectedDebugAndroidTest
將開始運行模擬器上測試。
我不想爲所有並行調用運行這些程序(在這種情況下,它將是其中的4個),因爲顯然我多次執行完全相同的工作。理論上,最好的選擇是在parallel
之前執行設置,並且一切準備好運行測試,然後進入parallel
步驟並在每個仿真器上開始測試。
問題
是否可以執行所有的connectedDebugAndroidTest
安裝前步驟而不執行本身?
此外,如果我在4個模擬器上並行運行connectedDebugAndroidTest
,則構建崩潰,因爲當其他並行構建已經刪除該文件時,由於gradle嘗試從intermediate
目錄讀取文件,導致崩潰。
您可以使用上述設置查看this test project in github。