2012-02-28 13 views

答えて

16

月ベルケル3月8日にマスターにマージされましたRobolectricにa pull requestを提出しました。テスト開始時にRobolectric.getFakeHttpLayer().interceptHttpRequests(false);と呼ぶと、Robolectricの模擬HTTP層をバイパスできます。

あなたのEclipseのAndroidプロジェクトに含めるSonatypeから直接jarファイルをダウンロードすることができます。 Mavenを使用していて、1.1がまだリリースされていない場合(上記SonatypeのURLをチェックしてください)、sonatype snapshot repoを追加し、robolectric 1.1-SNAPSHOTを使用する必要があります。これを行うには、pom.xmlに以下を追加します。

<repositories> 
    <repository> 
     <id>sonatype-snapshots</id> 
     <name>Sonatype Snapshots</name> 
     <layout>default</layout> 
     <url>https://oss.sonatype.org/content/repositories/snapshots</url> 
     <snapshots> 
      <enabled>true</enabled> 
     </snapshots> 
    </repository> 
</repositories> 
... 
<dependencies> 
    <dependency> 
     <groupId>com.pivotallabs</groupId> 
     <artifactId>robolectric</artifactId> 
     <version>1.1-SNAPSHOT</version> 
     <scope>test</scope> 
    </dependency> 
    ... 
</dependencies> 

これは実サーバに対して実行される統合テストに使用しており、うまくいきます。

+0

:)ありがとうございました –

3

基本的にはありません。 Robolectricはテストフレームワークであり、これはRobolectricで行ったことではなく、Robolectricがうまく動作するように設計されています。

Robolectricテスト用のHTTPリクエストを使用して、this blogクロスが来たと確信しています。実際にはタイトル「HTTPリクエストをテストする方法」は非常に正確なIMOではありません。私はむしろ"HTTPリクエストを模擬する方法"、このブログに記載されているように、Robolectric Mock HTTPリクエストを使用する最良の場所は、おそらくリモートサーバーへの実際のネットワークコールをプロジェクト開発中に邪魔したくない場所です/テスト段階。

その後、別の応答に基づいて、自分のアカウント情報を更新し、私はいくつかの操作のための私の銀行口座への主な活動接続している、送信ボタンをリモートサーバに私の入力情報を投稿しなければならないとし、いくつかの異なる活動に私をもたらします。私はすべてのコードをスムーズに書いた、HttpClient、送信ボタン、次の活動への新しい意図など、すてきで清潔なもの。はい、どうすれば私の実際の銀行口座をねじ込むために私の活動のソースコードを変更するか、実際のネットワークコールを使用する必要はありません、異なる応答に基づいて適切な活動が開かれます。答えはRobolectric mock http要求です。この場合のRobolectricの重要な点は、実際のhttpリクエストをテストするのではなく、httpClientコードを欺くために使用され、UIコードのようなアプリケーションコードの他の部分をテストするために使用されます。結局のところ、実際のネットワークテストは、展開が最終的に安定した状態になるいくつかの段階で、エミュレータまたは実際のデバイスで実行する必要があります。

Robolectircチームが主張するもう一つの利点は、あなたが非効率的である、エミュレータやデバイス上で計測テストを開始し、アプリケーション開発/テストのライフサイクルを遅くする必要がないことです。

+0

私はmock httpについて知っており、oauthプロバイダに依存しているログインをテストするときには便利です。私はコントロールがありません。しかし、私がサービスのファサードをテストしたいときは、ローカルのテストサーバーを実行して正しいデータを設定しているため、すべてのリクエストを模擬するのは無意味です。だから私がしたいのは、あるポイントと別のポイント(ログイン)での実際のリクエストによる統合テストですrobolectricによって提供されたfakehttpclientを使いたい –

+0

@Felix、私自身の経験から、Robolectric JUnitテストとAndroid Instrumentation Test (テストプロジェクト経由で)一緒に。実際のHTTPリクエストをテストするには、単にRobolectricを使用しないでください。 – yorkw

関連する問題