2016-07-23 13 views
7

AndroidスタジオでいくつかのAndroid Instrumentationクラスを作成しようとしているので、ormliteクラスをテストできます。 ormliteのDBHelperクラスはormlite設定ファイルから読み取る必要があります。これは、res/raw/ormlite_config.txtにあり、R.raw.ormlite_configを使ってアクセスします。Android Instrumentation jUnitテストでR.rawリソースにアクセス

DBHelperのスーパークラスのコンストラクタがintリソースを必要としているので、私はopenRawResource(R.raw.ormlite_config)を使用することはありません。

私は私のテストを実行すると、それはしかし、それを見つけることができません。

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); 
    } 
} 

マイ

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

をここで完全なスタックトレースがありますjUnitテストケース:

Commonswareの答えで固定
@RunWith(AndroidJUnit4.class) 
public class ORMLiteTest { 
    @Before 
    public void setup() { 
     DB.shared(InstrumentationRegistry.getContext()); 
    } 
} 

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

答えて

9

getContext()は、あなたのandroidTest/ソースのセットからリソースへContextポインティングを返します。リソースが実際のアプリ自体に含まれている場合はgetTargetContext()を使用してください(例:main/ソースセット)。

関連する問題