Ho installato un progetto di prova Android che esegue i test di junit. Sta usando due progetti Eclipse "Application" e "ApplicationTest" dove i miei test sono nel progetto "ApplicationTest". In uno dei miei test ho bisogno di accedere a un file, questo funziona bene se metto il file sulla sdcard e punto un oggetto File ad esso. Tuttavia vorrei accedere al file come una risorsa, ma non sembra funzionare. Questo è quello che ho fatto:Accesso alle risorse in un progetto di prova Android
- salvato il file in
ApplicationTest/res/raw/myfile.xml
- cercando di farlo utilizzando:
InputStream is = getContext().getResources().openRawResource(R.raw.myfile);
Ma che mi dà questa eccezione:
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
mia classe di test estende AndroidTestCase, quindi è da lì che viene il contesto.
Aggiornamento:
Così il problema sembra essere il fatto che durante la compilazione vengono utilizzate le risorse nel progetto di test, ma in fase di esecuzione vengono utilizzate le risorse nel progetto principale. Non sono ancora sicuro di come sistemarlo. Quindi attualmente funziona solo se metto la stessa risorsa grezza sia nel progetto di test che nel progetto principale che, naturalmente, è abbastanza stupido.
La sua non è chiaro che cosa si sta cercando di fare qui. O potrebbe essere solo io. Puoi elaborare quello che stai cercando di fare qui. La configurazione è chiara, basta dare un esempio di ciò che ti aspetti da un risultato PASS e da un risultato FALLITO. – Siddharth
@Siddharth Non sono sicuro di cosa dovrei elaborare, voglio dire se la risorsa è stata trovata, il mio test sarebbe passato (come funziona se accedo al file direttamente dalla sdcard). Credo che mi sarebbe sfuggito qualcosa su come utilizzare i file di risorse in Android, o come accedervi dalle classi di test delle unità. – Zitrax
Quindi sarà d'aiuto se il progetto di test per Android è un sottoprogetto? O un progetto dipendente? – Siddharth