पृष्ठभूमिपर connectedAndroidTest कई emulators
मैं अलग emulators पर जेनकींस पर मेरे Android Instrumented परीक्षण चलाना चाहते हैं। मान लें कि मेरे पास 100 परीक्षण और 4 अनुकरणक हैं, मैं प्रत्येक पर 25 परीक्षण चलाने के लिए चाहता हूं।
मैं 4 emulators
stage('Instrumented Tests') {
parallel(
emu1: {
runInstrumentedTestOnEmu(...)
},
emu2: {
runInstrumentedTestOnEmu(...)
}
...
)
}
connectedDebugAndroidTest
के लिए जेनकींस पाइपलाइन के समानांतर में ./gradlew connectedDebugAndroidTest
प्रदर्शन अन्य आदेशों के क्रम में स्थापना के लिए instrumented परीक्षण चलाने के लिए पर्यावरण अंडे जाएगा।
...
:app:transformNativeLibsWithMergeJniLibsForDebugAndroidTest
:app:processDebugAndroidTestJavaRes NO-SOURCE
:app:transformResourcesWithMergeJavaResForDebugAndroidTest
:app:validateSigningDebugAndroidTest
:app:packageDebugAndroidTest
:app:assembleDebugAndroidTest
:app:connectedDebugAndroidTest
और जब पर्यावरण के लिए तैयार है तो यह :app:connectedDebugAndroidTest
जो एमुलेटर पर परीक्षण प्रदर्शन शुरू हो जाएगा performes।
मैं नहीं चाहता कि मेरे सभी समानांतर कॉल के लिए इन प्रक्रिया (इस मामले में यह उनमें से 4 होगा) को चलाने के लिए है, क्योंकि स्पष्ट रूप से मैं ठीक उसी काम को कई बार कर रहा हूँ चाहता हूँ। सैद्धांतिक रूप से, सबसे अच्छा विकल्प से पहले parallel
और जब सब कुछ परीक्षण चलाने के लिए तैयार है, तो parallel
कदम में जाने और प्रत्येक एमुलेटर पर परीक्षण शुरू सेटअप प्रदर्शन करने के लिए किया जाएगा।
प्रश्न
यह अपने आप बिना प्रदर्शन connectedDebugAndroidTest
के सभी पूर्व सेटअप चरणों को पूरा करना संभव है?
साथ ही, यदि मैं, 4 emulators निर्माण दुर्घटनाओं पर connectedDebugAndroidTest
समानांतर क्योंकि Gradle intermediate
निर्देशिका, से एक फ़ाइल को पढ़ने की कोशिश करता है, जब अन्य समानांतर निर्माण पहले से ही उस फ़ाइल है, जो दुर्घटना में परिणाम हटा दिया गया है।
आप ऊपर उल्लेख किया सेटअप के साथ this test project in github देख सकते हैं।