2013-04-05 6 views
6

In einem Android-Projekt versuche ich, einfache Junit-Tests auszuführen. Sie scheitern immer mit:java.lang.RuntimeException: Stub! Laufen Junit in Android-Projekt

java.lang.RuntimeException: Stub! 
at org.apache.http.impl.client.AbstractHttpClient.<init>(AbstractHttpClient.java:5) 
at org.apache.http.impl.client.DefaultHttpClient.<init>(DefaultHttpClient.java:7) 
at com.my.android.JsonParser.getJSONFromUrl(JsonParser.java:27) 
at com.my.android.test.JsonParser_Test.getJson(JsonParser_Test.java:19) 

Dies ist die Zeile, die es fehlschlägt, jede neue Klasseninitiierung würde das tun.

public JSONObject getJSONFromUrl(String url) { 
     DefaultHttpClient httpClient = new DefaultHttpClient(); 
     ... 
} 

In mehreren Stellen fand ich, dass das junit Glas vor den Android SDK aufgenommen werden sollte. Ich tat das in IntelliJ, aber ich half nicht. Ich verwende junit 4.9 und Android SDK 4.2.2

Antwort

0

Ich denke, dass robolectric für Sie nützlich sein kann.

Das Ausführen von Tests auf einem Android-Emulator oder -Gerät ist langsam! Das Erstellen, Bereitstellen und Starten der App dauert oft eine Minute oder länger. Das ist keine Möglichkeit, TDD zu machen. Es muss einen besseren Weg geben.

Wäre es nicht schön, Ihre Android-Tests direkt von innen Ihre IDE laufen zu lassen? Vielleicht hast du es versucht und durch die gefürchtete 'java.lang.RuntimeException: Stub!' Vereitelt?

http://pivotal.github.com/robolectric/

+0

Ja Dank hatte ich auch schon einen Blick auf sie. Sieht gut aus. Aber in diesem Fall brauchen Sie einen einfachen Junit-Test, ohne das ganze Android-Zeug zu starten. – Torsten

+0

Vielleicht können Sie die Tests als normales Java-Projekt ausführen und die Apache HttpComponents (http://hc.apache.org/) -Abbindung für die DefaultHttpClient-Klasse verwenden? –