2015-08-24 11 views
25

Ho la seguente struttura di cartelle in Android Studio:test di Android risorsa grezza

├── androidTest 
│   ├── java 
│   └── res 
│    └── raw 
│     └── test_file 
└── main 
    ├── java 
    └── res 
     └── raw 
     └── app_file 

Sto cercando di accedere alla risorsa test_file che esiste nella cartella grezzo degli elementi androidTest. Ecco il codice all'interno di un banco di prova Robotium che eredita da ActivityInstrumentationTestCase2:

InputStream is = this.getInstrumentation() 
       .getContext() 
       .getResources() 
       .openRawResource(R.raw.test_file); 

Android Studio getta un errore di riferimento in quanto la risorsa non può essere trovato. L'errore esatto è "Impossibile risolvere il simbolo test_file".

Come posso fare riferimento a questa risorsa in un caso di test, che esiste sul pacchetto di risorse AndroidTest?

+0

Hai uno strumento che genera l'albero per te? –

+0

Sì, lo strumento 'albero' bash – jlhonora

+0

Bello grazie per il suggerimento –

risposta

32

Per impostazione predefinita il tuo progetto androidTest includerà la classe R dell'app, ma le risorse di androidTest verranno generate in un file separato. Assicurati di importare la classe R dal progetto di prova:

import com.your.package.test.R; 

[..] 

getInstrumentation().getContext().getResources().openRawResource(R.raw.test_file); 

Si può anche fare riferimento direttamente classe R del progetto di test:

getInstrumentation().getContext().getResources().openRawResource(com.your.package.test.R.raw.test_file); 
+3

Ho la stessa struttura di file dell'OP, ma 'raw' non viene generato per la variante' androidTest'. –

+0

@YaroslavMytkalyk che tipo di file stai mettendo nella cartella raw? – jlhonora

+0

@jlhonora un file binario senza estensione. Ho provato a rinominarlo aggiungendo un'estensione arbitraria, che non ha cambiato nulla. –

9

ho avuto le androidTest risorse nel posto giusto (src/androidTest/res) e Non riesco ancora ad accedervi tramite <normal.package>.test.R. Ho passato molto tempo a cercare su Google cosa stava succedendo ..

FINALMENTE sono incappato nella risposta. Se stai creando un buildType in cui hai specificato un applicationIdSuffix, i tuoi file sono al <applicationId><applicationIdSuffix>.test.R !!!!

cioè

applicationId "com.example.my.app" 

buildTypes { 
    debug { 
     applicationIdSuffix ".debug" 
    } 
} 

se avete androidTest risorse nella directory giusta, allora si può accedere solo tramite com.example.my.app.debug.test.R !!!!

Problemi correlati