単体テストを含める

このセクションでは、プロジェクトに変更を加えた後に Trade Federation テストを実行する方法について説明します。以下に例を示します。

  • 新しい単体テストクラスを追加する場所
  • Eclipse と Eclipse IDE 以外での単体テストの実行
  • 機能テストの実行
  • 一部の TF presubmit 検証をローカルで実行する

単体テストを追加する

Android オープンソース プロジェクト(AOSP)で、tools/tradefederation/core/tests/src/com/android/tradefed/UnitTests.java に単体テストクラスを追加します。

重要: ここに新しい単体テストクラスを追加すると、追加の設定を行わなくても presubmit で自動的に実行されます。

単体テストを実行する

Trade Federation の AOSP 単体テストと機能テストはすべて、tools/tradefederation/core/tests プロジェクトにあります。

Eclipse 内で個々の単体テストを実行するには、テストを右クリックして [Run As] > [JUnit] を選択します。すべての単体テストを実行するには、com.android.tradefed.UnitTests スイートを実行します。

また、ビルド後に Tradefed ソースツリーのコマンドラインから、tools/tradefederation/core/tests/run_tradefed_tests.sh のようにして単体テストを開始することもできます。

単体テストはスタンドアロンで実行できますが、機能テストは Trade Federation 自体を使用して実行する必要があります(Android デバイスが必要です)。機能テストはすべて、*FuncTest という命名規則に従う必要があります。

単体テスト結果を確認する

run_tradefed_tests.sh を実行すると、単体テストではエラー条件なども含んだテストハーネスのすべての処理が行われます。スタック トレースを含む詳細がコンソールに出力されます。

最終的な結果のサマリーに、失敗があったかどうかが示されます。

コンソールの最終的なサマリーの例を次に示します。

12:55:02 ========== Result Summary ==========
Results summary for test-tag 'TFUnitTests': 3355 Tests [3355 Passed]

すべてのテストで合格する必要があるため、ローカルの変更によりエラーが発生した場合にはテストを修正してください。

機能テストを実行する

Eclipse から機能テストを実行する手順は次のとおりです。

  1. デバイスがホストに接続されており、adb と(必要に応じて)fastboot が Eclipse のパスにあることを確認します。適切なパスを使用して、シェルから Eclipse を起動する方法が最も簡単です。
  2. Java アプリケーションを作成します。[Run] > [Run configurations] で構成を実行します。
  3. プロジェクトを google-tradefederation-tests に設定し、メインクラスを com.android.tradefed.command.CommandRunner に設定します。
  4. Arguments タブでコマンドライン引数 host --class <full path of test class to run> を指定します。
  5. [Run] をクリックします。

Eclipse 以外で機能テストを実行する手順は次のとおりです。

  1. Trade Federation を作成します。
  2. Android デバイスをホストに接続します。
  3. tools/tradefederation/core/tests/run_tradefed_func_tests.sh を実行します。
  4. オプションで、adb devices の出力に表示されるように、--serial <serial no> を追加してデバイスを選択します。

ローカルの変更に対する TF presubmit テストの実行

TF presubmit と同様の方法で実行する場合は、以下を使用します。

tools/tradefederation/core/tests/run_tradefed_aosp_presubmit.sh

これにより、ローカルに作成された TF に対するすべての TF presubmit テストがトリガーされ、変更によってどのテストも破壊されないことを検証できます。

TF presubmit テストは上記の単体テストのスーパーセットですが、実行に時間がかかります。したがって、開発中に単体テストを実行して検証を迅速化し、CL をアップロードする前に presubmit を実行することをおすすめします。