Wie Sie access-Dateien aus dem Ordner "assets" während der tests die Ausführung?
Wie access-Dateien aus dem Ordner "assets" während der unit-tests Ausführung? Mein Projekt ist das bauen mit Gradle, ich benutze Robolectric tests ausführen. Wie es scheint, gradle wird die Anerkennung der assets
:
Dies ist, wie ich zu kämpfen, die Datei zu Lesen:
public String readFileFromAssets(String fileName) throws IOException {
InputStream stream = getClass().getClassLoader().getResourceAsStream("assets/" + fileName);
Preconditions.checkNotNull(stream, "Stream is null");
BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
return IOUtils.toString(reader);
}
Aber stream
ist immer null
. Ich versuchte es viele verschiedene Möglichkeiten, d.h. den vorgegebenen Pfad zu einer Datei mit verschiedenen Ansätzen.
Vielen Dank im Voraus.
InformationsquelleAutor der Frage Eugene | 2014-11-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Grundsätzlich müssen Sie
Context
zu Lesen Vermögen. Sie können nicht geladen werden Vermögenswerte mitClassLoader
da es nicht im classpath. Ich bin nicht sicher, wie Sie Sie ausführen Robolectric test Fällen. Hier sind, wie ich erreichen kann in Android studio und gralde Befehl.Hinzugefügt habe ich eigene app-unit-test-Modul zum ausführen von Robolectric test-Fälle, in-app-Projekt.
Mit der richtigen build-Konfiguration und benutzerdefinierte
RobolectricTestRunner
nach Testfall übergeben werden.app-unit-test/bauen.gradle
Hinzufügen von benutzerdefinierten RobolectricTestRunner, passen Sie die Datei-Pfade.
Blick auf das Vermögen Weg.
Folgte ich diesem blog zu tun.
Voller Beispiel codes sind hier.
InformationsquelleAutor der Antwort Chk0nDanger
Ich habe gerade stecken, mit dem gleichen Problem und hier ist, wie es funktioniert für mich.
Legte ich die Testdateien auf
src/test/resources
Ordner anstelle der Ordner "assets".Dann bekomme ich diese Dateien als stream in folgender Weise
filename
ist der relative Pfad zu der Datei inresources
Ordner.Das ist es. Ich habe die Lösung gefunden zu Robolectric github
InformationsquelleAutor der Antwort Andrii Panasiuk
Aktualisierung für Roboelectric 3.1
Siehe auch
de Guide
InformationsquelleAutor der Antwort Nicks
Mit der neuesten Android Instrumentation Tests können Sie verwenden Sie einfach diese:
InformationsquelleAutor der Antwort GMsoF
Haben Sie versuchen Sie, den Ordner "assets" unter main statt androidTest?
Außerdem sind Sie mit https://github.com/robolectric/robolectric-gradle-plugin zum ausführen der tests?
InformationsquelleAutor der Antwort kageiit
Wenn Robolectric müssen wir rechnen:
Finden Sie auf der offiziellen docs
InformationsquelleAutor der Antwort SHoko
Wenn alles richtig ist, dann müssen Sie etwas wie diese zu Lesen:
Du musst Kontext für Sie zu arbeiten.
Andere Sache, um zu überprüfen, ob Sie so konfiguriert haben, dass Vermögenswerte in Gradle richtig? Hier ist nur ein Beispiel:
InformationsquelleAutor der Antwort Igor K