Я установил тестовый проект Android, который запускает тесты junit. Он использует два проекта eclipse «Application» и «ApplicationTest», где мои тесты находятся в проекте «ApplicationTest». В одном из моих тестов мне нужен доступ к файлу, это отлично работает, если я помещаю файл на SD-карту и указываю на него объект File. Однако я хотел бы получить доступ к файлу как к ресурсу, но это не работает. Вот что я сделал:
ApplicationTest / res / raw / myfile.xml
InputStream is = getContext (). GetResources (). OpenRawResource ( R.raw.myfile);
Но это дает мне исключение:
android.content.res.Resources$NotFoundException: File Hello World, HelloAndroidActivity! from drawable resource ID #0x7f040000 at android.content.res.Resources.openRawResource(Resources.java:823) at android.content.res.Resources.openRawResource(Resources.java:799) at com.quizzer.test.QuestionHandlerTests.testImportQuestions(Tests.java:182) at java.lang.reflect.Method.invokeNative(Native Method) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448) Caused by: java.io.FileNotFoundException: Hello World, HelloAndroidActivity! at android.content.res.AssetManager.openNonAssetNative(Native Method) at android.content.res.AssetManager.openNonAsset(AssetManager.java:406) at android.content.res.Resources.openRawResource(Resources.java:820) ... 14 more
Мой тестовый класс расширяет AndroidTestCase, поэтому контекст берется именно отсюда.
Обновление:
Проблема, похоже, в том, что во время компиляции используются ресурсы в тестовом проекте, но во время выполнения используются ресурсы в основном проекте. Я пока не знаю, как это исправить. Так что в настоящее время это работает, только если я помещаю один и тот же необработанный ресурс как в тестовый, так и в основной проект, что, конечно, довольно глупо.