He configurado un proyecto de prueba de Android que ejecuta pruebas junit. Utiliza dos proyectos de eclipse, "Aplicación" y "Prueba de aplicación", donde mis pruebas se encuentran en el proyecto "Prueba de aplicación". En una de mis pruebas necesito acceder a un archivo, esto funciona bien si pongo el archivo en la tarjeta SD y le señalo un objeto File. Sin embargo, me gustaría acceder al archivo como un recurso, pero parece que no funciona. Esto es lo que hice:Acceso a recursos en un proyecto de prueba de Android
- guardó el archivo en
ApplicationTest/res/raw/myfile.xml
- tratando de hacerlo usando:
InputStream is = getContext().getResources().openRawResource(R.raw.myfile);
Pero eso me da esta excepción:
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
Mi clase de prueba extiende AndroidTestCase, de ahí viene el contexto.
Actualización:
Así que el problema parece ser que durante la compilación se utilizan los recursos en el proyecto de prueba, pero en tiempo de ejecución se utilizan los recursos en el proyecto principal. Todavía no estoy seguro de cómo solucionar eso. Por lo tanto, actualmente solo funciona si pongo el mismo recurso en bruto tanto en el proyecto de prueba como en el proyecto principal, que por supuesto es bastante estúpido.
no está claro lo que está tratando de hacer aquí. O puede ser solo yo. ¿Puedes elaborar lo que estás tratando de hacer aquí? La configuración es clara, solo da un ejemplo de lo que esperas para un resultado PASS y un resultado FAIL. – Siddharth
@ Siddharth No estoy seguro de qué debería elaborar, quiero decir, si se encontrara el recurso, mi prueba pasaría (ya que funciona bien si tengo acceso al archivo directamente desde la tarjeta SD). Supongo que podría haber olvidado algo sobre cómo usar los archivos de recursos en Android, o cómo acceder a ellos desde las clases de prueba de la unidad. – Zitrax
¿Ayudaría si el proyecto de prueba de Android es un proyecto secundario? O un proyecto dependiente? – Siddharth