Ken*_*and 9 junit android android-resources
我正在尝试在Android Studio中制作一些Android Instrumentation类,以便我可以测试我的ormlite类.DBHelperormlite 的类需要从ormlite配置文件中读取,该文件位于我的res/raw/ormlite_config.txt并使用R.raw.ormlite_config.
这不是我openRawResource(R.raw.ormlite_config)用来获取的东西,因为DBHelper的超类的构造函数需要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.
Run Code Online (Sandbox Code Playgroud)
DBHelper:
public class DBHelper extends OrmLiteSqliteOpenHelper {
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION, R.raw.ormlite_config);
}
}
Run Code Online (Sandbox Code Playgroud)
我的jUnit测试用例:
@RunWith(AndroidJUnit4.class)
public class ORMLiteTest {
@Before
public void setup() {
DB.shared(InstrumentationRegistry.getContext());
}
}
Run Code Online (Sandbox Code Playgroud)
修复了Commonsware的答案:
@RunWith(AndroidJUnit4.class)
public class ORMLiteTest {
@Before
public void setup() {
DB.shared(InstrumentationRegistry.getTargetContext());
}
}
Run Code Online (Sandbox Code Playgroud)
Com*_*are 15
getContext()返回Context指向androidTest/源集中的资源.使用getTargetContext()资源是否在实际的应用程序本身(例如,main/源集).
| 归档时间: |
|
| 查看次数: |
1005 次 |
| 最近记录: |