2016-05-05 8 views
5

मैंने अपनी परियोजना को बहु-मंच बनने के लिए संशोधित किया है।ग्रेड: मॉड्यूल निर्भरता से परीक्षण कैसे चलाएं?

पिछला राज्य: एक build.gradle के साथ केवल एक मॉड्यूल (प्रोजेक्ट)। सभी परीक्षण परीक्षण फ़ोल्डर में थे और जब मैं gradlew testDebug चलाता हूं तो मेरे सभी 500 परीक्षण चल रहे थे।

नए राज्य: मैं एक मुख्य Gradle परियोजना जो 3 मॉड्यूल

  • कोर पकड़े
  • androidversion
  • rasberryPiVersion

इनमें से प्रत्येक लेकिन कुछ नहीं करता है मॉड्यूल में इसकी खुद की ग्रेडल फ़ाइल है लेकिन केवल एंड्रॉइड और रासबेरीपी मॉड्यूल बनाया जा सकता है। उनकी निर्भरताओं में (उनके संबंधित build.gradle फ़ाइल में), वे "कोर" मॉड्यूल के खिलाफ संकलित करते हैं। इस तरह:

dependencies { 
    compile project(':clapcore') 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.google.android:android:4.1.1.4' 
} 

मेरे सभी 500 परीक्षण अब मूल में हैं। तो जब मैं एंड्रॉइड मॉड्यूल पर gradlew clean assembleDebug testDebug करता हूं, तो कोई परीक्षण नहीं पता चला है और परीक्षण-परिणाम का फ़ोल्डर खाली है।

मैं सीधे कोर मॉड्यूल पर testDebug आदेश भागने की कोशिश की, लेकिन जब से यह अपने आप में निर्माण नहीं है, मैं त्रुटि प्राप्त:

FAILURE: Build failed with an exception. 

* What went wrong: 
Task 'testDebug' not found in project ':core'. 

तो मेरे सवाल है: वहाँ में एक रास्ता है, "मॉड्यूल निर्भरता (कोर) में मौजूद सभी परीक्षणों को चलाने के लिए" testDebug "कमांड को बताने के लिए धीरे-धीरे?

मैं भी एंड्रॉयड मॉड्यूल की निर्भरता में एक testCompile जोड़ने की कोशिश की है, लेकिन यह does not काम, इस तरह:

dependencies { 
    compile project(':clapcore') 
    testCompile project(':clapcore') 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.google.android:android:4.1.1.4' 
} 

धन्यवाद!

संपादित मैं ने पाया है कि मैं कोर पर आदेश gradlew build कर सकते हैं और यह 'कोर' मॉड्यूल में परीक्षण चलेंगे। लेकिन अगर यह संभव हो तो मैं इन परीक्षणों को "कैस्केड" द्वारा चलाने का एक तरीका चाहूंगा।

* संपादित 2 * मैं ने पाया है कि मैं 'एंड्रॉयड' मॉड्यूल पर कमांड gradlew buildNeeded कर सकते हैं और यह एंड्रॉयड मॉड्यूल और कोर के लिए एक निर्माण करेंगे। दुर्भाग्य से, यह केवल रिलीज में निर्माण! अगर कोई मुझे इस फ़ंक्शन का उपयोग करने का तरीका बता सकता है लेकिन डीबग में, यह आश्चर्यजनक होगा। मुझे इसे डीबग में करने की ज़रूरत है क्योंकि रिहाई ने संस्करण को बदलने, गिट, पुश इत्यादि के लिए प्रतिबद्ध कई और काम शुरू किए हैं ... यह केवल रात के निर्माण के लिए है, इसलिए इसे डीबग में होना चाहिए।

उत्तर

0

ग्रैडल वेबसाइट के प्रलेखन को पढ़ने के बाद, मैंने पाया कि बहुत अच्छा फ़ंक्शन buildNeeded बस सभी buildType चलाएं और आप नहीं बदल सकते हैं। केवल एक ही कार्य जो आपको बिल्डटाइप चुनने की संभावना देता है, क्रमशः assembleDebug और assembleRelease है।

मेरी रिलीज प्रक्रिया के बाद (टैग का निर्माण, संस्करण का अद्यतन, गिट करने के लिए धक्का, आदि ..) assembleRelease के ठीक बाद चल रहा था, मैं अटक गया था क्योंकि एक रात के निर्माण में buildNeeded चलाना रिलीज प्रक्रिया को ट्रिगर करेगा।

इसलिए मैंने releaseVersion नामक एक कार्य बनाने के लिए अपनी build.gradle फ़ाइल को संशोधित किया जो zipalignRelease पर निर्भर करता है। तो जब मैं वास्तव में एक रिलीज बनाना चाहता हूं, तो मैं releaseVersion पर कॉल करता हूं लेकिन जब मैं बस रात के निर्माण में निर्माण/परीक्षण करना चाहता हूं, तो मैं buildNeeded कमांड को कॉल करता हूं।

देखने के लिए चीजें: परीक्षण परिणाम प्रत्येक मॉड्यूल के "निर्माण" फ़ोल्डर में से प्रत्येक में होंगे। यदि आप सीआई का उपयोग कर रहे हैं तो सभी मॉड्यूल को साफ करने के लिए अच्छी देखभाल करें।

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