2014-07-21 8 views
10

Possiedo un progetto Android Studio con un modulo interno della libreria Java che dispone di test con risorse di test. Eppure quando eseguo i test non sono in grado di recuperare gli artefatti. Questo sembra funzionare bene in un progetto java gradle puro (almeno in eclissi).Studio Android con modulo libreria Java Impossibile caricare le risorse di test

significato per plug-in Java:

src/main/java 
src/main/test 
src/test/java 
src/test/resources 

Sotto la directory delle risorse Ho un file CRT che voglio caricare nel mio test JUnit. Quando si utilizza qualsiasi comando che ho incontrato, restituisce null per la risorsa. Eppure ho confermato che le risorse sono nella cartella build.

Alcune cose che ho provato:

getClass().getClassLoader().getResourceAsStream("cert_format_der.crt").read(); // NPE 
getClass().getClassLoader().getResourceAsStream("/cert_format_der.crt").read(); // NPE 
getClass().getClassLoader().getSystemResourceAsStream("/cert_format_der.crt").read(); // NPE 

Grazie

+0

Ho scoperto che utilizzando il comando gradle 'test' all'interno di Android Studio funziona però. – nibuen

+0

ottima domanda. – Jon

risposta

18

scopre questo sembra essere un bug con IntelliJ e come Gradle non impostare la directory risorsa per le sourcesets test correttamente.

L'aggiunta di questo alla build.gradle per il modulo lo fissa:

sourceSets { 
    test { 
     output.resourcesDir = output.classesDir 
    } 
} 
+2

vorrei poter sopravvivere più di una volta. – Jon

+1

Chiunque desideri seguire il problema, originale con soluzione alternativa: https://code.google.com/p/android/issues/detail?id=64887 e la risoluzione in sospeso di questo problema è disponibile qui: https://code.google.com/p/android/issues/detail? id = 75991 – JCricket

+0

non funziona. le risorse di test non vengono copiate nella directory di costruzione e quindi non in classpath. – Sunnyday

4

Invece di divergenti delle risorse nella directory di output di classe - come suggerito da nibbuen - è anche possibile non toccare la directory di output e aggiungerla esplicitamente come dipendenza.

dependencies { 
    runtime files(sourceSets.test.output.resourcesDir) 
} 
+0

ha funzionato come un fascino! Grazie! – Noya

+0

Provato. ma la directory di build non ha risorse di test. – Sunnyday

Problemi correlati