web-dev-qa-db-ja.com

Espressoでテストするときにモックデータを提供する方法

テストのない非常に大きなAndroidアプリケーションがあります。通常の品質/手動回帰テストサイクルが長すぎるという問題が発生しています。

Androidを初めて使用するサーバー側の開発者として、開発者テストを紹介したいと思います。

JUnitで通常のJavaコードをユニットテストする方法を見ることができます。

ただし、アクティビティ/フラグメント/アダプタはより困難であることが証明されています。

GTACのEspressoビデオを見て感動し、それを使うことにしました。

私が苦労しているのは、テストケースにモックデータを提供して表示を確認する方法です。

これも可能ですか? Espressoはブラックボックステスト用のようです。これは、(通常)ブラックボックステストがQAによって行われるため、開発者(ターゲットオーディエンス)の使用を大幅に制限します。

16
FinalFive

サーバーの応答をモックできるmockwebserverというライブラリがあります。 Github: https://github.com/square/okhttp/tree/master/mockwebserver

Gradleを使用している場合は、次の依存関係を追加できます。

 androidTestCompile 'com.squareup.okhttp:mockwebserver:1.3.0'

役立つスニペット:

模擬サーバーをセットアップする

MockWebServer server = new MockWebServer(); 

サンプル応答を追加します(サーバーが最初に呼び出されたときにのみ機能します)

server.enqueue(new MockResponse().setBody("Hello World Response"));

サーバーを起動します

 server.play();

サーバーのURLを取得して、使用している通常のURLを置き換えます。

  URL baseUrl = server.getUrl("/");

ここで、モックされていないWebサービスを呼び出すのと同じ方法でBaseURLを使用するすべてのものに要求を行います。最初にサービスを呼び出すと、上からの応答が返されます。トリッキーな部分は、アプリが実際に行うリクエストとして、正確な数のMockResponseがキューに入れられていることです。コードをステップスルーしている場合、デバッガーは実際に応答の1つをポップするため、コードのデバッグ/監視には注意してください。

それを理解するのに問題がある場合は、ここにJava Webプロジェクト(WebではなくWebでもまったく同じように機能します)いくつかの基本的な例が書かれています。 https: //github.com/digitalbuddha/GitPullRank

14
FriendlyMikhail

同じ問題に直面し、必要なものに完全に適合するフレモワークを見つけることができませんでした。しかし、Wiremockが近づいた。

私はこれを使用してAPIの回答を記録したり、再生モードで使用したりします。記録モードの場合、リクエストがすでに記録されていると、再度記録されません。 Android( まだ )では完全にはサポートされていませんが、自分のマシンで スタンドアロンとして実行 、アプリまたはエスプレッソを実行しますテスト。リクエストや回答を手動で編集または追加することもできます。

あなたはより多くの詳細を見つけるでしょう ここ

2
juhlila