gpt4 book ai didi

android - 在 Android Instrumentation jUnit 测试中访问 R.raw 资源

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:26:26 25 4
gpt4 key购买 nike

我正在尝试在 Android Studio 中创建一些 Android Instrumentation 类,以便我可以测试我的 ormlite 类。 ormlite 的 DBHelper 类需要从 ormlite 配置文件中读取,该文件位于我的 res/raw/ormlite_config.txt 中,并使用 R.raw.ormlite_config< 访问.

这不是我使用 openRawResource(R.raw.ormlite_config) 获取的东西,因为 DBHelper 父类(super class)的构造函数需要 int 资源。

当我运行我的测试时,它找不到它:

android.content.res.Resources$NotFoundException:资源 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.

数据库助手:

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

我的 jUnit 测试用例:

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

最佳答案

getContext() 返回一个 Context 指向您的 androidTest/ 源集中的资源。如果资源在实际应用程序本身中(例如,main/ 源集),请使用 getTargetContext()

关于android - 在 Android Instrumentation jUnit 测试中访问 R.raw 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38545926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com