単体テストと機能テストを含める

このセクションでは、プロジェクトに変更を加えた後に 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/javatests/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]

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

機能テストを追加する

  • 機能テストにデバイス(任意の ITestDevice API を使用)が関係している場合、スイートの定義は com.android.tradefed.DeviceFuncTests にあります。そうではない場合、スイートの定義は com.android.tradefed.FuncTests にあります。

  • 既存のメソッド サブクラスのいずれかにテストメソッドを配置することが合理的な場合は、追加することをおすすめします。そうではない場合は、適切なスイートに新しいクラスを追加してください。

  • いずれの場合も、スイートに追加することで、対象のテストは他の機能テストとともに CI パイプラインで自動的に実行されます。

機能テストを実行する

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

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

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

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

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

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

tools/tradefederation/core/javatests/run_tradefed_aosp_presubmit.sh

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

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