効果的な単体テストを作成する

単体テストは、アプリのテスト戦略の基礎となるテストです。コードに対して単体テストを作成して実行することにより、個々のユニットのロジックが正しいことを簡単に確認できます。ビルドのたびに単体テストを実行すれば、アプリのコード変更によって引き起こされるソフトウェアのリグレッションをすばやく捕捉して修正できます。

単体テストでは、通常、可能な限り小さいコード単位(メソッド、クラス、コンポーネント)の機能を繰り返し実行します。アプリ内の特定コードのロジックを検証する必要がある場合に、単体テストを作成します。たとえば、クラスの単体テストをしているのであれば、そのテストではクラスが正しい状態にあることを確認できます。通常、ユニットのコードは他から分離した状態でテストします。つまり、テストで変更や監視を行うのはそのユニットに対してのみということです。Robolectric やモック フレームワークのような依存関係プロバイダを使用することで、ユニットを依存関係から分離できます。

注: 単体テストは、複雑な UI 操作イベントのテストには適していません。このようなテストには、UI テストの自動化で説明されているように、UI テスト フレームワークを使用する必要があります。

Android アプリをテストするには、通常、次のタイプの自動化単体テストを作成します。

  • ローカルテスト: ローカルマシンでのみ実行される単体テスト。このテストは、Java 仮想マシン(JVM)上でローカルに実行されるようにコンパイルされ、実行時間を最小限に抑えられます。テストが Android フレームワークのオブジェクトに依存する場合は、Robolectric の使用をおすすめします。独自の依存関係に依存するテストでは、モック オブジェクトを使用して依存関係の動作をエミュレートします。
  • インストゥルメント化テスト: Android デバイスまたはエミュレータで実行される単体テスト。このテストでは、テスト対象アプリの Context などのインストゥルメンテーション情報を利用できます。Robolectric のような強力な環境を必要とする、複雑な Android 依存関係を持つ単体テストを実行するには、この方法を使用します。

このクラスの以下のレッスンでは、上記の自動化単体テストの作成方法を学習します。

レッスン

ローカル単体テストを作成する
ローカルマシンで実行する単体テストの作成方法を学びます。
インストゥルメント化単体テストを作成する
Android デバイスやエミュレータで実行する単体テストの作成方法を学びます。

参考情報

Espresso を使用した Android のテストに関するその他の情報については、次のリソースをご覧ください。

サンプル

Codelab