Robolectric sagt "AndroidManifest.xml nicht gefunden"
Während Sie versuchen, um Robolectric RC3 arbeiten in Android-Studio, bekomme ich
Caused by: java.lang.RuntimeException: build/intermediates/bundles/debug/AndroidManifest.xml not found or not a file; it should point to your project's AndroidManifest.xml
at org.robolectric.manifest.AndroidManifest.validate(AndroidManifest.java:120)
at org.robolectric.manifest.AndroidManifest.getResourcePath(AndroidManifest.java:469)
at org.robolectric.manifest.AndroidManifest.getIncludedResourcePaths(AndroidManifest.java:475)
at org.robolectric.RobolectricTestRunner.createAppResourceLoader(RobolectricTestRunner.java:479)
at org.robolectric.RobolectricTestRunner.getAppResourceLoader(RobolectricTestRunner.java:471)
at org.robolectric.internal.ParallelUniverse.setUpApplicationState(ParallelUniverse.java:73)
at org.robolectric.RobolectricTestRunner.setUpApplicationState(RobolectricTestRunner.java:421)
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:234)
Versuchte ich
@Config(manifest = "app/src/main/AndroidManifest.xml", constants = BuildConfig.class, sdk=21)
und ich habe versucht, das manifest Lage in meinem TestRunner, nichts funktionierte. In der Datei system sehe ich, dass das manifest ist in
./app/build/intermediates/manifests/full/debug/AndroidManifest.xml
nicht in der Lage Robolectric ist auf der Suche nach es.
An einer Stelle der manifest hab einfach ignoriert, dann ist ein ähnliches Problem aufgetreten ist, für Ressourcen, die app oder Robolectric nicht finden konnte, einen Rohstoff meiner app verwendet.
Dies ist in meinem build-Datei:
sourceSets {
main {
java.srcDirs = ['src/main/java']
resources.srcDirs = ['src/main/res']
}
test {
java.srcDirs = ['src/test/java', 'src/main/java']
resources.srcDirs = ['src/test/res', 'src/main/res']
}
}
Wie kann ich sagen, Robolectric, wo ein manifest, und noch wichtiger, wo Sie, nach Ressourcen zu suchen?
Bearbeiten:
Ich habe ausgecheckt Robolectric von github, ich habe es gebaut, installiert es in meinem lokalen .m2 repo, die gradle-Datei bezieht sich jetzt auf die lokale SNAPSHOT-build, und ich sorgte dafür, dass Gradle nicht eine neue version von einem remote-repo. Dann kopierte ich die RobolectricGradleTestRunner zu meinem Projekt, habe ich geändert, die Linien, bei denen die Speicherorte definiert sind: es hat nicht enthalten den Namen des Moduls. Jetzt funktioniert es.
InformationsquelleAutor der Frage Christine | 2015-06-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nehme an, Sie versuchen, führen Sie die tests mit JUnit. Sie können versuchen, zwei verschiedene Dinge:
@Config
annotation./app
(für OSX und Linux) oder\app
(Windows), um den Pfad geschrieben, in das Textfeld ein. Versuchen Sie wieder zum laufen und es sollte funktionieren.InformationsquelleAutor der Antwort J.C. Chaparro
Gleiche problem auf Android-Studio. Ich habe dieses problem gelöst, Bearbeiten Sie die Konfiguration von Unit4. können Sie diese Dinge.
Auf Android-Studio.
Wichtig ist $MODULE_DIR$.
können Sie auf dem folgenden screenshot. danke.
InformationsquelleAutor der Antwort Rooney
Ich habe vor gleichen Fehlern, haben Wir mehrere Geschmacksrichtungen und buildtypes
So, gibt es Schritte, damit es funktioniert:
Müssen Sie set working directory $MODULE_DIR$ in Windows zu. http://robolectric.org/getting-started/ sagen sollte.
Unit-test sollte mit Kommentaren versehen werden wie diese:
@RunWith(RobolectricTestRunner.class)
@Config(Konstanten = BuildConfig.class, sdk = 21, manifest = "src/main/AndroidManifest.xml" packageName = "com.Beispiel.yourproject")
public class SomeFragmentTest {
InformationsquelleAutor der Antwort Kirill Vashilo
Können Sie finden die gleichen Problem hier:https://github.com/robolectric/robolectric/issues/1648
Erwähnen Sie das in Ihrem test-code:
Dieser erzählt die robolectric, wo Sie Ihre manifest-Datei ist. Sollte dies funktionieren, es sei denn, Sie ändern Ihre Verzeichnis-Werte.
auch versuchen, verwenden Sie die Vorlage im internet zur Verfügung.Alles ist setup.Sie brauchen nicht zu ändern Ihre Verzeichnis-Werte. Sie können es von hier:https://github.com/robolectric/deckard-gradle
Edit: so wie ich Das sehe ist die Ausnahme Auftritt bei "
build/intermediates/bundles/debug/AndroidManifest.xml "
aber Sie sagen, die Datei ist bei"app/build/intermediates/manifests/full/debug/AndroidManifest.xml"
ich denke, diese zwei verschiedenen Standorten. Bitte stellen Sie sicher, dass Sie die xml-Datei anbuild/intermediates/bundles/debug/AndroidManifest.xml "
InformationsquelleAutor der Antwort Teja Nandamuri
Beachten Sie, dass intellij 16 EAP hat einen bug, um dieses $MODULE_DIR$ variable (es zeigt an die falsche Stelle), so dass die tests fehlschlagen, mit dieser Ausnahme. Sehen https://youtrack.jetbrains.com/issue/IDEA-149802#tab=History. Sollte behoben Mitte Jan 2016.
InformationsquelleAutor der Antwort sakis kaliakoudas
In Fall, dass Sie noch immer dieser Fehler mit Android Studio 3.0, stellen Sie bitte sicher, dass Ihre gradle-Konfiguration hat diese Parameter:
InformationsquelleAutor der Antwort busradeniz
Richtig @Christine. Ich bin auch mit Blick auf das genaue problem. Und die Sache ist build-Prozess ist nicht zu schaffen-bundles Ordner bei alle unter Zwischenprodukte. Und custom robolectric Läufer auch nicht funktioniert hat. Hier ist die benutzerdefinierte Läufer ich
verwendet. Ich habe nicht noch herausgefunden, aber die Lösung es scheint, dass das problem eventuell mit der build-tool-version verwendet muss.
[Update] Ändern working directory, in meinem unit-test run-zu-Punkt-Konfiguration an das Modul root-Verzeichnis, die derzeit getestet, für mich gearbeitet.[Update]
InformationsquelleAutor der Antwort kaps
Ich hatte diesen Fehler nachdem ich aktualisiert AndroidStudio zu 2.3.3 und mein gradle-plugin wurde auch aktualisiert.
Es wurde gelöst, indem die Einstellung
working directory
zu$MODULE_DIR$
und auch die Aktualisierungrobolectric
Abhängigkeit vontestCompile 'org.robolectric:robolectric:3.0'
zutestCompile 'org.robolectric:robolectric:3.4.2'
.Beachten Sie, dass die Einstellung
working directory
währendrobolectric
version ist alt, nicht es zu lösen.InformationsquelleAutor der Antwort Merka