आपके परीक्षण आवेदन और आपके मुख्य अनुप्रयोग में संसाधन एक उपकरण परीक्षण मामले में अलग-अलग पहुंच योग्य हैं। आप उन संसाधनों परीक्षण परियोजना की रेस/कच्चे या संपत्ति फ़ोल्डर में हैं उपयोग करना चाहते हैं, तो आप आवेदन में उपयोग कर सकते हैं
getInstrumentation().getContext().getResources()
उन संसाधनों तक पहुंच के लिए परीक्षण किया जा रहा ('लक्ष्य' आवेदन),
का उपयोग
getInstrumentation().getTargetContext().getResources()
नोट, हालांकि, आप संपत्ति फ़ोल्डर में फ़ाइलों को कभी भी संशोधित नहीं कर सकते हैं;
getResources().getAssets().open(sourceFile)
एक इनपुटस्ट्रीम देता है। फ़ाइल को संशोधित करने का कोई तरीका नहीं है। ऐसा इसलिए है क्योंकि संपत्ति एपीके के अंदर संपीड़ित होती है, और वास्तव में बिल्कुल लिखने योग्य नहीं होती है।
यदि आप जो करना चाहते हैं, उस फाइल के पथ को संशोधित करें जो आप परीक्षण कर रहे हैं, तो आपको ActivityUnitTestCase और setActivityContext()RenamingDelegatingContext के साथ उपयोग करना चाहिए। यह आपको निर्देशिका उपसर्ग निर्दिष्ट करके एक नई निर्देशिका में किसी संदर्भ में फ़ाइल और डेटाबेस पहुंच को पुनर्निर्देशित करने की अनुमति देता है। आप अधिकांश परिचालनों के लिए लक्ष्य संदर्भ को लपेटने के लिए more complex constructor का भी उपयोग कर सकते हैं, लेकिन फ़ाइल ऑपरेशन के लिए अपने परीक्षण अनुप्रयोग के संदर्भ का उपयोग करें, इसलिए गतिविधि प्राथमिक एप्लिकेशन की बजाय परीक्षण एप्लिकेशन में संग्रहीत फ़ाइलों तक पहुंच जाएगी लेकिन फिर भी प्राथमिक एप्लिकेशन में अन्य संसाधनों का उपयोग करें ।
स्रोत
2010-10-06 23:03:54
महान उत्तर के लिए बहुत बहुत धन्यवाद। मैं देखता हूं कि एंड्रॉइड परीक्षण के बारे में अभी भी मुझे बहुत कुछ सीखना है। जब मैं इन समाधानों में से किसी एक को कार्यान्वित करने में सक्षम हूं तो मैं आपको अपडेट करूंगा। –
जब मैंने इनपुट परीक्षण को = getResources() में निष्पादित करने का प्रयास किया। GetAssets()। मेरे परीक्षण अनुप्रयोग में खोलें ("test.txt"), और मेरी संपत्ति निर्देशिका में "test.txt" नाम की एक फ़ाइल रखी, मुझे अपवाद मिला । –
@glenviewjeff आप किस संदर्भ में कॉल कर रहे थे स्रोत स्रोत()? एक परीक्षण विधि में या एक परीक्षण से शुरू की गई गतिविधि के अंदर? क्या आप सुनिश्चित हैं कि आप जिस 'संसाधन' का उपयोग कर रहे थे वह इंस्ट्रुमेंटेशन के 'getContext()' से आया था और 'getTargetContext() 'नहीं था? –