2025 年 3 月 27 日より、AOSP のビルドとコントリビューションには aosp-main
ではなく android-latest-release
を使用することをおすすめします。詳細については、AOSP の変更をご覧ください。
単体テストと機能テストを含める
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
このセクションでは、プロジェクトに変更を加えた後に 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]
すべてのテストで合格する必要があるため、ローカルの変更によりエラーが発生した場合にはテストを修正してください。
機能テストを追加する
機能テストを実行する
Eclipse から機能テストを実行する手順は次のとおりです。
- デバイスがホストに接続されており、
adb
と(必要に応じて)fastboot
が Eclipse のパスにあることを確認します。適切なパスを使用して、シェルから Eclipse を起動する方法が最も簡単です。
- Java アプリケーションを作成します。[Run] > [Run configurations] で構成を実行します。
- プロジェクトを
tradefed-tests
に設定し、メインクラスを com.android.tradefed.command.CommandRunner
に設定します。
m tradefed-all
を実行します。
- Arguments タブでコマンドライン引数
host
--class <full path of test class to run>
を指定します。
- [Run] をクリックします。
Eclipse 以外で機能テストを実行する手順は次のとおりです。
- Trade Federation を作成します。
- Android デバイスをホストに接続します。
tools/tradefederation/core/javatests/run_tradefed_func_tests.sh
を実行します。
- オプションで、
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 を実行することをおすすめします。
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-03-26 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-03-26 UTC。"],[],[],null,["# Include unit and functional tests\n\nThis section explains how to run and contribute to the Trade Federation tests\nafter making a change to the project. This includes:\n\n- Where to add the new unit test classes\n- Running unit tests in Eclipse and outside the Eclipse IDE\n- Where to add functional tests\n- Running the functional tests\n- Running some of TF presubmit validation locally\n\nAdd unit tests\n--------------\n\nIn the Android Open Source Project (AOSP), add the unit tests class in:\n[tools/tradefederation/core/tests/src/com/android/tradefed/UnitTests.java](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/tests/src/com/android/tradefed/UnitTests.java)\n\nIMPORTANT: Adding your new unit test classes to these locations will result in\nthem automatically running in presubmit without additional setup.\n\nRun unit tests\n--------------\n\nAll the AOSP unit tests and functional tests for Trade Federation are located in\nthe\n[`tools/tradefederation/core/tests`](https://android.googlesource.com/platform/tools/tradefederation/+/refs/heads/android16-release/tests/)\nproject.\n\nInside Eclipse, to run an individual unit test, simply right-click the test and\nselect **Run As \\\u003e JUnit** . To run all unit tests, run the\n**com.android.tradefed.UnitTests** suite.\n\nYou can also start the unit test from the command line in the Tradefed source\ntree after building, like so:\n`tools/tradefederation/core/javatests/run_tradefed_tests.sh`\n\nUnit tests can be executed standalone, but functional tests should be executed\nby using Trade Federation itself; they require an Android device. All functional\ntests should follow the naming convention `*FuncTest`.\n\n### Check unit tests results\n\nWhen running `run_tradefed_tests.sh`, the unit tests are exercising all parts of\nthe test harness including some error conditions. It will print verbose output\nto the console, including stack traces.\n\nThe final summary of the results will indicate if a failure occurred or not.\n\nExample final summary in the console: \n\n 12:55:02 ========== Result Summary ==========\n Results summary for test-tag 'TFUnitTests': 3355 Tests [3355 Passed]\n\nAll tests are maintained to pass, so if any failure occurs on your local change\nplease ensure the tests are fixed.\n\nAdd functional tests\n--------------------\n\n- If your functional test involves a device (uses any `ITestDevice` API) the\n suite definition is located in [com.android.tradefed.DeviceFuncTests](https://cs.android.com/android/platform/superproject/+/android-latest-release:tools/tradefederation/core/javatests/com/android/tradefed/DeviceFuncTests.java).\n Otherwise, the suite definition is located in [com.android.tradefed.FuncTests](https://cs.android.com/android/platform/superproject/+/android-latest-release:tools/tradefederation/core/javatests/com/android/tradefed/FuncTests.java).\n\n- If your test methods make sense to put in one of the existing suite sub-classes,\n prefer to add it there. Otherwise, feel free add a new class to the applicable\n suite.\n\n- In either case, by adding it to the suite, your test is automatically run\n in the CI pipeline with the other functional tests.\n\nRun functional tests\n--------------------\n\nTo run a functional test from Eclipse:\n\n1. Ensure a device is connected to the host and that `adb` and if necessary `fastboot` are in Eclipse's PATH. The easiest way to do this is to launch Eclipse from a shell setup with the proper PATH.\n2. Create a Java application. Run configuration via **Run \\\u003e Run\n configurations**.\n3. Set project to `tradefed-tests` and the main class to `com.android.tradefed.command.CommandRunner`.\n4. Run `m tradefed-all`.\n5. Provide the following command line arguments in the *Arguments* tab: `host\n --class \u003cfull path of test class to run\u003e`\n6. Click **Run**.\n\nTo run functional tests outside Eclipse.\n\n1. Build Trade Federation.\n2. Connect an Android device to the host.\n3. Run `tools/tradefederation/core/javatests/run_tradefed_func_tests.sh`\n4. Optionally, choose the device by appending `--serial \u003cserial no\u003e` as it appears in the output of `adb devices`.\n\nRun TF presubmit tests against local changes\n--------------------------------------------\n\nIf you want to run in a similar way as the TF presubmit, use this: \n\n tools/tradefederation/core/javatests/run_tradefed_aosp_presubmit.sh\n\nThis will trigger all the TF presubmit tests against your locally built TF to\nhelp you validate that your change is not breaking any tests.\n\nTF presubmit tests are a superset of the unit tests above, but it is slower to\nrun them. So it is recommended to run the unit tests during development for\nquicker validation and to run the presubmits before uploading the CL."]]