Robolectric+Eclipse nicht finden Können Ressourcen?
Ich gerade konfiguriert wurde und ein test-Projekt für meine Android-app zu verwenden, Robolectric.
Ich folgte der Eclipse Quick Start.
Wird eine Ausnahme ausgelöst, die Ausführung meiner einfachen ersten test.
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)
[...]
Den test folgt.
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);
}
}
Scheint es, kann es nicht finden Android ./res
Ordner. Ich wies mit dem JUnit-Konfiguration ${workspace_loc:teldir-android}
wie der Reiseführer sagt. Und das macht Eclipse zu finden, die AndroidManifest.xml
, Vermeidung von anderen Fehlern, imho.
Versuchen zu vermeiden, diese Ausnahme habe ich auch noch ./res
Ordner als source-Ordner von meiner Android-app, gereinigt und neu gestartet werden, alle, aber die gleiche exception ausgelöst.
Was mache ich falsch?
- Sie können auch versuchen, diese mit maven. Hier ist der Beispiel code: github.com/pivotal/RobolectricSample
- können Sie fügen Sie Ihren code importieren
- Gerade eingefügt, dass mein Import
- haben Sie bekommen alle weiter mit dieser? Ich bin in genau diesem Fehler.
- Keine guten Nachrichten über Sie, auch nicht von Robolectric Google-Gruppe 🙁
Du musst angemeldet sein, um einen Kommentar abzugeben.
Musste ich eine Umgebungsvariable hinzufügen, um meine laufversuche:
Ich hatte das exakt gleiche Problem (RuntimeException beim laden der Ressourcen) bei der ersten Einrichtung meiner Eclipse-Projekt mit Robolectric, aber jetzt funktioniert es.
Dachte ich zwei Dinge:
WARNING: Unable to find path to Android SDK
(die Nachricht kann nicht angezeigt werden in einer version kleiner als 1.0-RC1) dannResourceLoader
konnte nicht finden Sie in der SDK-root. Eine der Methoden sieht für einANDROID_HOME
Umgebungsvariable, die zeigen sollte, wo Ihr Android SDK befindet.Mit Robolectric ohne Maven oder Ant möglich ist, aber es könnte ein paar mehr bugs. Diese video zeigt die richtige Projekt-setup. Wenn es nicht funktioniert, erhalten Sie die neueste version von Github (import als Maven-Projekt in Eclipse, und Sie müssen möglicherweise github.com/mosabua/maven-android-sdk-deployer) und starten Sie das Debuggen!
Wenn die Ereignisse ResourceNotFound tritt nur für string-arrays definiert mit
<array>...</array>
tags, ersetzen Sie Sie mit<string-array>...</string-array>
Mit robolectric 2.0
Lesen in: https://groups.google.com/forum/#!Thema/robolectric/gQoY0bCguYs
docs: http://developer.android.com/guide/topics/resources/string-resource.html#StringArray
Seine offensichtlich geirrt..ich hatte, um das setup eine Ameise Weg, Dinge zu tun, wie Sie nicht starten können robolectric tests aus eclipse als Eclipse-workspace noch nicht erkennen verlinkten Quelle einzelne Dateien richtig..siehe meine alpha Beispiel:
https://github.com/shareme/Wabash
Gleichen Fehler bekomme ich übrigens..von Pivotal Labs Richtungen..
Hatte gerade dieses problem nach einer frischen Installation von Windows 8. Wahrscheinlich Robolectric nicht finden kann, die SDK. Um es an der richtigen Stelle. Sie können generieren eine
local.properties
- Datei in Ihrem Android-Projekt. Dies kann in der Befehlszeile durch, indem Sie den root-Ordner Ihres Projekts und den Befehl:Öffnen
local.properties
zu überprüfen, diesdk.dir
auf dem erwarteten Weg.Auch sicherstellen, dass Sie heruntergeladen, android-API-level 8. Robolectric sieht für einen Ordner in der
/path/to/your/sdk/platforms/android-8
Verzeichnis.Können Sie die Jar-Datei in diesem link.einfach herunterladen. hinzufügen von JAR in Projekt
thats it.ich habe in meinem Projekt. Zweifel Fragen Sie mich
http://www.java2s.com/Code/JarDownload/robolectric/robolectric-1.2-8.jar.zip