Robolectric + Eclipse Kann keine Ressourcen finden?

Ich habe gerade ein Testprojekt für meine Android App konfiguriert, um Robolectric zu benutzen. Ich folgte der Eclipse Schnellstart . Eine Ausnahme wird erhoben, indem ich meinen einfachen ersten Test ausführte.

java.lang.RuntimeException: java.lang.NullPointerException at com.xtremelabs.robolectric.res.ResourceLoader.init(ResourceLoader.java:93) at com.xtremelabs.robolectric.res.ResourceLoader.getStringValue(ResourceLoader.java:271) at com.xtremelabs.robolectric.shadows.ShadowResources.getString(ShadowResources.java:56) at android.content.res.Resources.getString(Resources.java) at org.xxx.mobile.android.teldir.app.TelephoneDirectoryTest.searchButtonLabelShouldBeGo(TelephoneDirectoryTest.java:22) [...] Caused by: java.lang.NullPointerException at com.xtremelabs.robolectric.res.StringResourceLoader.getValue(StringResourceLoader.java:17) at com.xtremelabs.robolectric.res.StringArrayResourceLoader.processNode(StringArrayResourceLoader.java:39) at com.xtremelabs.robolectric.res.XpathResourceXmlLoader.processResourceXml(XpathResourceXmlLoader.java:27) at com.xtremelabs.robolectric.res.DocumentLoader.loadResourceXmlFile(DocumentLoader.java:58) at com.xtremelabs.robolectric.res.DocumentLoader.loadResourceXmlDir(DocumentLoader.java:52) at com.xtremelabs.robolectric.res.DocumentLoader.loadResourceXmlDir(DocumentLoader.java:39) at com.xtremelabs.robolectric.res.ResourceLoader.loadValueResourcesFromDir(ResourceLoader.java:142) at com.xtremelabs.robolectric.res.ResourceLoader.loadValueResourcesFromDirs(ResourceLoader.java:136) at com.xtremelabs.robolectric.res.ResourceLoader.loadValueResources(ResourceLoader.java:109) at com.xtremelabs.robolectric.res.ResourceLoader.init(ResourceLoader.java:85) at com.xtremelabs.robolectric.res.ResourceLoader.getStringValue(ResourceLoader.java:271) at com.xtremelabs.robolectric.shadows.ShadowResources.getString(ShadowResources.java:56) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.xtremelabs.robolectric.bytecode.ShadowWrangler.methodInvoked(ShadowWrangler.java:87) at com.xtremelabs.robolectric.bytecode.RobolectricInternals.methodInvoked(RobolectricInternals.java:110) at android.content.res.Resources.getString(Resources.java) [...] 

Der Test folgt.

  • Um eine statische HTML-Seite in Android zu zeigen
  • Wie benutzt man RecyclerView in NestedScrollView?
  • Android: Wie kann man die Vorschau mit Rückruf anzeigen?
  • Wie kann man den verfügbaren Platz auf dem Android-Gerät überprüfen? Auf SD-Karte?
  • Suchansicht reagiert nicht, wenn in AppCompat Toolbar klicken
  • Wie zu verstecken Spinner Dropdown Android
  •  import static org.junit.Assert.assertEquals; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import com.xtremelabs.robolectric.RobolectricTestRunner; @RunWith(RobolectricTestRunner.class) public class TelephoneDirectoryTest { private TelephoneDirectory activity; @Before public void setUp() { activity = new TelephoneDirectory(); } @Test public void searchButtonLabelShouldBeGo() throws Exception { String goLabel = activity.getResources().getString(R.string.search); assertEquals("Go", goLabel); } } 

    Es scheint, dass es nicht finden kann Android ./res Ordner. Ich zeigte die JUnit-Konfiguration auf ${workspace_loc:teldir-android} wie der Führer sagt. Und das macht Eclipse, um die AndroidManifest.xml zu finden, um andere Fehler zu vermeiden, imho.

    Versuchen, diese Ausnahme zu vermeiden, habe ich auch den ./res Ordner als ./res meiner Android App hinzugefügt, gereinigt und neu gestartet, aber die gleiche Ausnahme wurde erhoben.

    Was mache ich falsch?

  • Android: Force EditText, um den Fokus zu entfernen?
  • Wenn der Cursor in SimpleCursorAdapter verwendet wird
  • Wie zu erkennen, welche nativen gemeinsamen Bibliotheken von Android-Anwendung geladen werden
  • Android - Format json string in adb logcat Ausgabe
  • Benutzerdefinierte Zeile in einem listPreference?
  • Wie kann man die Höhe der Tischreihe nach Bildschirmen erhöhen?
  • 6 Solutions collect form web for “Robolectric + Eclipse Kann keine Ressourcen finden?”

    Ich musste eine Umgebungsvariable zu meiner Testlaufkonfiguration hinzufügen:

     ANDROID_HOME=C:/path/to/android-sdks 

    Ich hatte genau das gleiche Problem (RuntimeException beim Laden der Ressourcen) beim ersten Einrichten meines Eclipse-Projektes mit Robolectric aber jetzt funktioniert es.

    Ich habe zwei Dinge herausgefunden:

    • Wenn Sie einen WARNING: Unable to find path to Android SDK kann nicht gefunden werden (die Meldung wird möglicherweise nicht in einer Version kleiner als 1.0-RC1 angezeigt), dann hat ResourceLoader Ihr SDK-Root nicht gefunden. Eine der Methoden sucht nach einer ANDROID_HOME Umgebungsvariable, die darauf hinweisen sollte, wo Ihr Android SDK wohnt.
    • Schließlich gibt es einen Fehler, der eine Ausnahme verursacht, wenn dein menu.xml nicht in einer bestimmten Weise formatiert ist.

    Mit Robolectric ohne Maven oder Ameise ist es möglich, aber es könnte noch ein paar Bugs geben. Dieses Video zeigt das richtige Projekt-Setup. Wenn es nicht funktioniert, bekomme die neueste Version von Github (Import als Maven-Projekt in Eclipse und du brauchst github.com/mosabua/maven-android-sdk-deployer ) und beginne Debugging!

    Wenn die ResourceNotFound nur für String-Arrays auftritt, die mit <array>...</array> -Tags definiert sind, ersetzen Sie sie durch <string-array>...</string-array>

    Mit robolectric 2.0 verwenden

    Lesen Sie in: https://groups.google.com/forum/#!topic/robolectric/gQoY0bCguYs

    Docs: http://developer.android.com/guide/topics/resources/string-resource.html#StringArray

    Es ist falsch offensichtlich .. Ich musste eine Ameise Weg, um Dinge zu tun, wie Sie nicht starten können robolectric Tests aus Eclipse, wie die Eclipse-Arbeitsbereich noch nicht erkennt verknüpfte Source-Dateien ordnungsgemäß .. siehe mein Alpha-Beispiel:

    https://github.com/shareme/Wabash

    Gleicher Fehler, den ich übrigens bekomme .. aus den Pivotal Labs Richtungen ..

    Habe gerade dieses Problem, nachdem du eine neue Installation von Windows 8 gemacht hast. Wahrscheinlich kann Robolectric das SDK nicht finden. Um es an die richtige Stelle zu stellen. Sie können eine local.properties Datei in Ihrem Android-Projekt generieren. Dies kann in der Befehlszeile erfolgen, indem Sie in den Stammordner Ihres Projekts gehen und den Befehl ausgeben:

     android update project –pc:\project\root\folder 

    Öffnen Sie local.properties , um zu überprüfen, dass sdk.dir auf den erwarteten Pfad zeigt.

    Stellen Sie außerdem sicher, dass Sie die Android-API-Ebene heruntergeladen haben. Robolectric sucht nach einem Ordner im Verzeichnis /path/to/your/sdk/platforms/android-8 .

    Du kannst die JAR-Datei in diesem Link bekommen. Laden Sie es einfach herunter. Füge JAR in das Projekt hinzu, das es in meinem Projekt benutzt hat. Irgendwelche Zweifel fragen mich

    http://www.java2s.com/Code/JarDownload/robolectric/robolectric-1.2-8.jar.zip

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.