テストのない非常に大きなAndroidアプリケーションがあります。通常の品質/手動回帰テストサイクルが長すぎるという問題が発生しています。
Androidを初めて使用するサーバー側の開発者として、開発者テストを紹介したいと思います。
JUnitで通常のJavaコードをユニットテストする方法を見ることができます。
ただし、アクティビティ/フラグメント/アダプタはより困難であることが証明されています。
GTACのEspressoビデオを見て感動し、それを使うことにしました。
私が苦労しているのは、テストケースにモックデータを提供して表示を確認する方法です。
これも可能ですか? Espressoはブラックボックステスト用のようです。これは、(通常)ブラックボックステストがQAによって行われるため、開発者(ターゲットオーディエンス)の使用を大幅に制限します。
サーバーの応答をモックできる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
同じ問題に直面し、必要なものに完全に適合するフレモワークを見つけることができませんでした。しかし、Wiremockが近づいた。
私はこれを使用してAPIの回答を記録したり、再生モードで使用したりします。記録モードの場合、リクエストがすでに記録されていると、再度記録されません。 Android( まだ )では完全にはサポートされていませんが、自分のマシンで スタンドアロンとして実行 、アプリまたはエスプレッソを実行しますテスト。リクエストや回答を手動で編集または追加することもできます。
あなたはより多くの詳細を見つけるでしょう ここ