2

RobolectricテストフレームワークのHTTPレイヤーを使用してHTTP呼び出しをテストしようとしています。

私のテストクラスはすでにRunWith(RobolectricTestRunner.class)で注釈が付けられています。HTTPテストケースの例を次に示します。

@Test
public void testHttpGet() {
    Robolectric.addPendingHttpResponse(200, "All your requests are belong to Robolectric");
    String response = ConnectionUtils.sendRequest();
    assertThat(response, equalTo("All your requests are belong to Robolectric"));
}

このテストは失敗し、JUnit障害トレースは次のDefaultRequestDirector例外(sendRequest()呼び出しから発生)を報告します。

java.lang.NoSuchMethodError: org.apache.http.impl.client.DefaultRequestDirector.<init>(Lorg/apache/commons/logging/Log;Lorg/apache/http/protocol/HttpRequestExecutor;Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/ConnectionReuseStrategy;Lorg/apache/http/conn/ConnectionKeepAliveStrategy;Lorg/apache/http/conn/routing/HttpRoutePlanner;Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/client/HttpRequestRetryHandler;Lorg/apache/http/client/RedirectHandler;Lorg/apache/http/client/AuthenticationHandler;Lorg/apache/http/client/AuthenticationHandler;Lorg/apache/http/client/UserTokenHandler;Lorg/apache/http/params/HttpParams;)V
at org.apache.http.impl.client.AbstractHttpClient.createClientRequestDirector(AbstractHttpClient.java:660)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:625)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)

Apacheクラスが例外をスローする原因となる可能性のあるアイデアはありますか?

現在の最新のライブラリであるrobolectric-1.2-20120730.165026-113-jar-with-dependencies.jarを使用します。

4

1 に答える 1

5

Robolectric Googleグループで回答が見つかりました:https ://groups.google.com/forum/#!msg / robolectric / jWwWjQ23wHI / X9b_ZdDMJg0J

  1. RobolectricJavaテストプロジェクト>プロパティ>Javaビルドパス>注文とエクスポートを右クリックします。
  2. robolectricjarをライブラリのリストの一番上に移動します。
  3. を見つけて削除しcached-robolectric-classes.jarます。RobolectricのEclipseのインストール手順に従った場合、このファイルは[メインのAndroidプロジェクト]/tmpの下にあります。
  4. JUnitを再実行して、作業に戻ります。
于 2012-08-03T17:17:23.853 に答える