2014-07-21 9 views
10

ich mit einer Java-Bibliothek Innenmodul ein Android-Studio-Projekt habe die Tests mit Testressourcen hat. Aber wenn ich die Tests durchführe, kann ich die Artefakte nicht finden. Dies scheint in einem reinen Java-Projekt (zumindest in der Finsternis) gut zu funktionieren.Android Studio mit Java-Bibliothek-Modul kann nicht Testressourcen laden

Bedeutung für Java-Plugin:

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

Unter dem Ressourcenverzeichnis i eine crt-Datei, die ich in meinem JUnit-Test laden möchten. Wenn ich einen Befehl benutze, den ich gefunden habe, gibt er null für die Ressource zurück. Trotzdem habe ich bestätigt, dass sich die Ressourcen im Build-Ordner befinden.

Einige Dinge, die ich versucht: richtig

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 

Dank

+0

Ich fand, dass die Verwendung des Großbuchstaben Befehl "Test" in Android Studio funktioniert. – nibuen

+0

große Frage. – Jon

Antwort

18

stellte sich heraus, das scheint ein Problem mit IntelliJ zu sein und wie Gradle nicht die Ressourcenverzeichnis für die Test sourcesets Einstellung.

für das Modul Dies ist auf die build.gradle Hinzufügen es Behebt:

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

Ich wünschte, ich könnte mehr als einmal upvote. – Jon

+1

Wer das Problem, original mit Abhilfe folgen: https://code.google.com/p/android/issues/detail?id=64887 und Live-Problemlösung anhängig ist hier: https://code.google.com/p/android/issues/Detail? id = 75991 – JCricket

+0

nicht funktioniert. Die Testressourcen werden nicht in das Build-Verzeichnis und nicht in den Klassenpfad kopiert. – Sunnyday

4

Statt die Mittel für die Klasse Ausgabeverzeichnis von divergierenden - wie von nibbuen vorgeschlagen - es ist auch möglich, nicht zu berühren Ausgabeverzeichnis und fügen Sie es explizit als Abhängigkeit hinzu.

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

arbeitete wie ein Charme! Vielen Dank! – Noya

+0

Versucht. aber das Build-Verzeichnis nicht Testressourcen haben. – Sunnyday

Verwandte Themen