2015-08-24 8 views
25

मैं एंड्रॉयड स्टूडियो में निम्न फ़ोल्डर संरचना है:एंड्रॉयड परीक्षण कच्चे संसाधन

├── androidTest 
│   ├── java 
│   └── res 
│    └── raw 
│     └── test_file 
└── main 
    ├── java 
    └── res 
     └── raw 
     └── app_file 

मैं test_file संसाधन जो androidTest तत्वों के कच्चे फ़ोल्डर में मौजूद है का उपयोग करने की कोशिश कर रहा हूँ।

InputStream is = this.getInstrumentation() 
       .getContext() 
       .getResources() 
       .openRawResource(R.raw.test_file); 

एंड्रॉयड स्टूडियो एक संदर्भ त्रुटि फेंकता है के बाद से संसाधन नहीं पाया जा सकता है: यहाँ एक Robotium परीक्षण का मामला है कि ActivityInstrumentationTestCase2 से विरासत के अंदर कोड है। सटीक त्रुटि "प्रतीक test_file को हल नहीं कर सकता" है।

मैं इस संसाधन को टेस्ट केस का संदर्भ कैसे दे सकता हूं, जो एंड्रॉइडटेस्ट संसाधन बंडल पर मौजूद है?

+0

क्या आपके पास ऐसा टूल है जो आपके लिए पेड़ उत्पन्न करेगा? –

+0

हां, बैश 'पेड़' उपकरण – jlhonora

+0

टिप –

उत्तर

32

डिफ़ॉल्ट रूप से आपके एंड्रॉइडटेस्ट प्रोजेक्ट में आपके ऐप की आर कक्षा शामिल होगी, लेकिन एंड्रॉइड टेस्ट के संसाधन एक अलग फ़ाइल में जेनरेट किए जाएंगे। सुनिश्चित करें कि आप अपने परीक्षण परियोजना से आर वर्ग आयात सुनिश्चित:

import com.your.package.test.R; 

[..] 

getInstrumentation().getContext().getResources().openRawResource(R.raw.test_file); 

तुम भी सीधे परीक्षण परियोजना के आर वर्ग देख सकते हैं:

getInstrumentation().getContext().getResources().openRawResource(com.your.package.test.R.raw.test_file); 
+3

मुझे ओपी के समान फ़ाइल स्टैक्चर मिला है, लेकिन 'एंड्रॉइडटेस्ट' संस्करण के लिए 'raw' उत्पन्न नहीं हुआ है। –

+0

@YaroslavMytkalyk कच्चे फ़ोल्डर में आप किस प्रकार की फाइल डाल रहे हैं? – jlhonora

+0

@jlhonora कोई बाइनरी फ़ाइल बिना विस्तार के। इसे कुछ मनमाने ढंग से विस्तार जोड़ने का नाम बदलने का प्रयास किया, जिसने कुछ भी नहीं बदला। –

9

मैं था सही जगह पर androidTest संसाधनों (src/androidTest/res) और मैं अभी भी <normal.package>.test.R के माध्यम से उन तक नहीं पहुंच सका। मैंने क्या पता चल रहा था यह जानने की कोशिश में बहुत समय बिताया ..

मैं आखिरकार जवाब पर ठोकर खाई। यदि आप buildType बना रहे हैं जहां आपने applicationIdSuffix निर्दिष्ट किया है, तो आपकी फ़ाइलें <applicationId><applicationIdSuffix>.test.R पर हैं !!!!

अर्थात

applicationId "com.example.my.app" 

buildTypes { 
    debug { 
     applicationIdSuffix ".debug" 
    } 
} 

यदि आप सही निर्देशिका में संसाधनों androidTest है, तो आप केवल उन्हें com.example.my.app.debug.test.R के माध्यम से उपयोग कर सकते हैं !!!!

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