【发布时间】:2012-03-04 05:15:38
【问题描述】:
我已经设置了一个运行 junit 测试的 android 测试项目。它使用两个 Eclipse 项目“Application”和“ApplicationTest”,我的测试在“ApplicationTest”项目中。在我的一个测试中,我需要访问一个文件,如果我将文件放在 sdcard 上并将 File 对象指向它,这可以正常工作。但是我想将该文件作为资源访问,但这似乎不起作用。这就是我所做的:
- 将文件保存在
ApplicationTest/res/raw/myfile.xml - 尝试使用:
InputStream is = getContext().getResources().openRawResource(R.raw.myfile);
但这给了我这个例外:
android.content.res.Resources$NotFoundException:文件 Hello World,HelloAndroidActivity!来自可绘制资源 ID #0x7f040000 在 android.content.res.Resources.openRawResource(Resources.java:823) 在 android.content.res.Resources.openRawResource(Resources.java:799) 在 com.quizzer.test.QuestionHandlerTests.testImportQuestions(Tests.java:182) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) 在 android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) 在 android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529) 在 android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448) 引起:java.io.FileNotFoundException:Hello World,HelloAndroidActivity! 在 android.content.res.AssetManager.openNonAssetNative(本机方法) 在 android.content.res.AssetManager.openNonAsset(AssetManager.java:406) 在 android.content.res.Resources.openRawResource(Resources.java:820) ... 14 更多我的测试类扩展了 AndroidTestCase,所以这就是上下文的来源。
更新:
所以问题似乎是在编译期间使用了测试项目中的资源,但在运行时使用了主项目中的资源。我还不确定如何解决这个问题。所以目前它只有在我在测试项目和主项目中都放置相同的原始资源时才有效,这当然很愚蠢。
【问题讨论】:
-
不清楚你想在这里做什么。或者可能只是我。你能详细说明你想在这里做什么。设置很清楚,只需举例说明您对 PASS 结果和 FAIL 结果的期望。
-
@Siddharth 我不确定我应该详细说明什么,我的意思是如果找到资源,我的测试将通过(因为如果我直接从 sdcard 访问文件,它工作正常)。我想我可能错过了一些关于如何在 android 中使用资源文件,或者如何从单元测试类中访问它们的内容。
-
那么如果android测试项目是子项目会有帮助吗?还是依赖项目?
标签: android eclipse unit-testing