2016-07-23 11 views
7

मैं एंड्रॉइड स्टूडियो में कुछ एंड्रॉइड इंस्ट्रूमेंटेशन क्लास बनाने की कोशिश कर रहा हूं ताकि मैं अपने ऑर्मेलाइट कक्षाओं का परीक्षण कर सकूं। DBHelper कक्षा के लिए ऑर्मेलाइट को ऑर्मेलाइट कॉन्फ़िगरेशन फ़ाइल से पढ़ने की आवश्यकता है, जो मेरे res/raw/ormlite_config.txt में है और R.raw.ormlite_config का उपयोग करके एक्सेस किया गया है।एंड्रॉइड इंस्ट्रुमेंटेशन में आरआरओ संसाधनों तक पहुंचने के लिए jnnit test

ऐसा कुछ नहीं है जिसे मैं openRawResource(R.raw.ormlite_config) का उपयोग करने के लिए उपयोग करता हूं, क्योंकि डीबीहेल्पर के सुपरक्लस के लिए निर्माता int संसाधन चाहता है।

जब मैं अपने परीक्षण चलाने के लिए, यह नहीं है कि यह हालांकि पा सकते हैं:

android.content.res.Resources$NotFoundException: Resource ID #0x7f090001

यहाँ पूर्ण स्टैकट्रेस है:

android.content.res.Resources$NotFoundException: Resource ID #0x7f090001 
at android.content.res.Resources.getValue(Resources.java:1266) 
at android.content.res.Resources.openRawResource(Resources.java:1181) 
at android.content.res.Resources.openRawResource(Resources.java:1158) 
at com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper.openFileId(OrmLiteSqliteOpenHelper.java:310) 
at com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper.<init>(OrmLiteSqliteOpenHelper.java:76) 
at com.inadaydevelopment.herdboss.DB.<init>(DB.java:40) 
at com.inadaydevelopment.herdboss.DB.shared(DB.java:31) 
at com.inadaydevelopment.herdboss.ORMLiteTest.setup(ORMLiteTest.java:29) 
... 
at android.support.test.internal.runner.TestExecutor.execute(TestExecutor.java:59) 
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:262) 
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1853) 

Tests ran to completion. 

DBHelper:

public class DBHelper extends OrmLiteSqliteOpenHelper { 
    public DBHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION, R.raw.ormlite_config); 
    } 
} 

मेरे जुनीट टेस्ट केस:

@RunWith(AndroidJUnit4.class) 
public class ORMLiteTest { 
    @Before 
    public void setup() { 
     DB.shared(InstrumentationRegistry.getContext()); 
    } 
} 

Commonsware के जवाब के साथ निर्धारित:

@RunWith(AndroidJUnit4.class) 
public class ORMLiteTest { 
    @Before 
    public void setup() { 
     DB.shared(InstrumentationRegistry.getTargetContext()); 
    } 
} 

उत्तर

9

getContext() अपने androidTest/ स्रोत सेट से संसाधनों के लिए एक Context इशारा देता है। यदि संसाधन वास्तविक ऐप में हैं (उदा। main/ स्रोत सेट) getTargetContext() का उपयोग करें।

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