2014-10-30 4 views
9

Vorrei includere le risorse da compilare solo per i test.Configurazione di res srcDirs per androidTest sourceSet

Ho il seguente nella mia app file del modulo build.gradle:

android { 

    ... 

    sourceSets { 
     androidTest { 
      java.srcDirs = ['src/androidTest/java'] 
      res.srcDirs = ['src/androidTest/res'] 
     } 
    } 
} 

Il percorso srcDirs java è corretto, ma se cerco di ottenere una risorsa dalla directory res nel androidTest, la risorsa può' essere trovato

Come posso avere risorse nella directory androidTest che sono incluse solo per i test?

risposta

13

Risulta che non è necessario modificare nulla dal file build.gradle predefinito.

Il trucco è che il file generato automaticamente R.java è diverso per le risorse in androidTest.

Se l'istruzione import per R da qualche parte nel tuo set principale fonte assomiglia:

import com.mycompany.myappname.R; 

l'istruzione import per R in un file di test dovrebbe essere simile:

import com.mycompany.myappname.test.R; 
+4

Funziona anche per me, ma solo in InstrumentationTestCase. Se si utilizza questo in un AndroidTestCase, gli ID delle risorse non sono gli stessi e ho ottenuto un'immagine PNG casuale al posto del file XML che ho richiesto. – Oyvind

11

Se si dispone di un tipo di build in cui hai impostato il applicationIdSuffix, le tue risorse src/androidTest/res saranno a <applicationId><applicationIdSuffix>.test.R !!!!! MOLTO IMPORTANTE !!!

cioè

applicationId "com.example.my.app" 

buildTypes { 
    debug { 
     applicationIdSuffix ".debug" 
    } 
} 

hanno alcune risorse in src/androidTest/res? NON sono allo com.example.my.app.test! Se stai eseguendo la build di debug, sono a com.example.my.app.debug.test.R !!!!

+0

Grazie mille! –

+0

Cosa ti fa pensare che OP abbia impostato un ** applicationIdSuffix **? –