2017-03-03 6 views
12

पृष्ठभूमिपर 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 देख सकते हैं।

उत्तर

8

क्या यह प्रदर्शन किए बिना जुड़े DebugAndroidTest के सभी पूर्व-सेटअप चरणों को निष्पादित करना संभव है?

हां, आप assembleDebugAndroidTest चला सकते हैं, जो आपके बिल्ड लॉग शो के रूप में डिवाइस परीक्षण चलाने के लिए अंतिम शर्त है। चल रहा है कि ऐप और टेस्ट एपीके दोनों का निर्माण करेगा।

हालांकि AFAIK, वहाँ कई emulators भर में अपने परीक्षण sharding जब Gradle का उपयोग करने का एक तरीका नहीं है - आप प्रत्येक एमुलेटर पर APK में दोनों को स्थापित करने और numShards और shardIndex विकल्पों के साथ adb shell am instrument का उपयोग करना होगा।

संबंधित मुद्दे