2014-09-05 5 views
20

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

ग्रहण आधारित एसडीके के साथ यह सरल और स्पष्ट था - परीक्षण परियोजना अपनी संपत्ति फ़ोल्डर के साथ एक अलग परियोजना थी। एंड्रॉइड स्टूडियो के साथ यह ऐसा कुछ है जो build.gradle (या सम्मेलन द्वारा) में कॉन्फ़िगर करता है।

हमारे यूनिट परीक्षण निष्पादित हो रहे हैं, आखिरकार, लेकिन मैंने कस्टम (और, आदर्श, विलय) संपत्ति फ़ोल्डर के बारे में जो भी सुझाव पाया है, उसे समाप्त कर दिया है। यहाँ मैं क्या करने की कोशिश की है या नहीं:

  • एंड्रॉयड बंद भीतर sourceSets के लिए एक परीक्षण बंद जोड़ना (बंद से मुझे लगता है कि जो build.gradle में घुंघराले ब्रेसिज़ के बीच है मतलब)।

    androidTest { 
        assets.srcDirs = ['src/androidTest/assets/'] 
    } 
    
  • यही बात है, लेकिन sourceSet के नाम के रूप में "परीक्षण" (के रूप में करने के लिए "androidTest", ऊपर खिलाफ) है और यह भी "instrumentTest" के साथ साथ।

  • उपरोक्त के विभिन्न संयोजन, प्लस androidTest.setRoot ("test"), androidTest.setRoot ("androidTest"), जिनमें से दोनों हमारे यूनिट परीक्षणों को पहचानने के लिए ("खाली सूट") का कारण बनते हैं।

यह प्रश्न अधिक सामान्य रूप से कहा जा सकता है "एंड्रॉइड स्टूडियो में यूनिट परीक्षणों के लिए एक अलग निर्देशिका कैसे काम करता है"।

हम एंड्रॉइड से प्रलेखन पर हैं और या तो हम इसे समझ नहीं रहे हैं, यह गलत है, या कहीं भी एक बग है।

किसी भी मदद की बहुत सराहना की जाएगी।

उत्तर

19

मैंने अपने स्वयं के प्रश्न के उत्तर पर ठोकर खाई है, जिसके लिए मैंने प्रतिष्ठित "टम्बलवेड" पुरस्कार उन प्रश्नों के लिए आरक्षित किया है जो विशेष रूप से ब्याज की उल्लेखनीय कमी को प्रेरित करते हैं। कम से कम यह किसी के लिए उपयोगी साबित हो सकता है।

अंत में मैं एंड्रॉइड के ग्रेडल बिल्ड में एक बग के रूप में इसका वर्णन करने जा रहा हूं लेकिन किसी भी निर्णायक दस्तावेज़ीकरण की अनुपस्थिति में जो एक राय बनी रहती है।

ऐसा लगता है कि "एंड्रॉइडटेस्ट/संपत्ति" बस काम नहीं करता है। हालांकि "डीबग/संपत्ति" करता है। तो आकस्मिक रूप से "डीबग/जावा" करता है इसलिए समाधान किसी भी और सभी परीक्षण संसाधनों और कोड को डीबग रूट में रखना है, यूनिट परीक्षण के अपवाद के साथ।

मैं अपने build.gradle में निम्न संशोधन कहा:

androidTest { 
     assets.srcDirs = ['src/main/assets', 'src/androidTest/assets/', 'src/debug/assets/'] 
     java.srcDirs = ['src/main/java', 'src/androidTest/java', 'src/debug/java'] 
    } 

और अब मैं परिसंपत्तियों और mocks कि रिहाई का निर्माण के लिए अज्ञात हैं रोजगार इकाई परीक्षण कार्य कर रहा है।

+3

लगता है कि Google ने इसे ठीक किया है।मैं एंड्रॉइड स्टूडियो 0.8.6 + ग्रेडल 1.12 का उपयोग कर रहा हूं, और "एंड्रॉइडटेस्ट/एसेट्स" फ़ोल्डर बिना किसी अतिरिक्त स्क्रिप्ट के काम करता है। – weidongxu

3

मैं एंड्रॉइड स्टूडियो 1.3 + ग्रैडल 1.2.3 का उपयोग कर रहा हूं और src/androidTest/संपत्ति मेरे लिए काम नहीं करती है। मैंने सबकुछ को src/debug में बनाया है बिना किसी बदलाव के .gradle और यह काम किया। एपीके बनाने के दौरान एंड्रॉइड स्वचालित रूप से डीबग फ़ोल्डर से आइटम उठाता है।

+0

उत्कृष्ट टिप @ कंधन, यह मेरी समस्या हल हो गई। – ovidiu

3

मुझे नहीं पता कि यह पहले कैसा था, लेकिन मैं एंड्रॉइड वाद्ययंत्र इकाई परीक्षण बनाने में सक्षम था जहां मैं परीक्षण संपत्ति या उत्पादन संपत्ति पढ़ सकता हूं। अधिक जानकारी के लिए this उत्तर देखें।

+2

आपके द्वारा भेजा गया लिंक EXTREMLY सहायक था! बहुत बहुत धन्यवाद। यह स्वीकार्य उत्तर होना चाहिए। –

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