Tradefed のスイートとは、テスト全体の実行を進める共通のテストランナーのもとで、複数のテストが実行される設定を意味します。
Tradefed のスイートは ITestSuite クラスを介して実行され、実行方法に関係なくテストの追加と削除ができます。
定義
- スイート: 同様のトップレベル設定のもとで実行するように設定され、1 回の呼び出しで結果を報告するテスト モジュールのセット。
- トップレベル設定: いずれかのテスト モジュールを実行する前にデバイスに適用される設定。
- メイン設定: 実行すべきモジュールと使用すべきトップレベル設定を記述した、スイートレベルの Tradefed XML 設定。
- モジュール レベル設定: モジュールを実行する直前にデバイスに適用される設定。これらはモジュール固有の設定とも呼ばれます。
- モジュール設定: AndroidTest.xmlTradefed XML 設定。モジュールと、行う必要のあるモジュール レベル設定を記述します。
- モジュール: 設定ステップ(モジュール レベル設定)、テスト実行ステップ、破棄ステップからなるテストユニット。
- モジュール内再試行: モジュール内のハーネスによる自動再試行。
- スイート再試行: 以前不合格になったスイートのテストの完全な再実行。
ITestSuite の構造
Tradefed の ITestSuite とは、スイート実行共通の基本クラスを指します。すべての主要なテストスイート、具体的には Android 互換性テストスイート(CTS)と Android ベンダー テストスイート(VTS)で共有され、すべてのスイートにわたって一貫した実行エクスペリエンスを提供します。
ITestSuite をスイート ランナーと呼ぶこともあります。
スイート ランナーは実行時に次のステップを進みます。
- モジュールの設定を読み込み、実行するセットを決定します。
- 各モジュールを実行します。 - モジュール レベル設定を実行します。
- モジュール テストを実行します。
- モジュール レベルの破棄を実行します。
 
- 結果を報告します。 
トップレベル設定
Tradefed の観点からは、ITestSuite は単に別のテストです。複雑なテストではあるものの、他の IRemoteTest のようなテストと同じです。そのため、Tradefed 設定でスイート ランナーを指定する場合、Tradefed は通常の設定パターンに従い、build_provider、target_preparer、テスト(この場合はスイート)、target_cleaner を実行します。
ITestSuite を含む Tradefed 設定のこのシーケンスがトップレベル設定です。
例:
<configuration description="Common config for Compatibility suites">
    <build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
    <!-- Setup applied before the suite: so everything running in the suite will
    have this setup beforehand -->
    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
        <option name="run-command" value="settings put global package_verifier_enable 0" />
        <option name="teardown-command" value="settings put global package_verifier_enable 1"/>
    </target_preparer>
    <!-- Our ITestSuite implementation -->
    <test class="com.android.compatibility.common.tradefed.testtype.suite.CompatibilityTestSuite" />
    <result_reporter class="com.android.compatibility.common.tradefed.result.ConsoleReporter" />
</configuration>
モジュール メタデータ
モジュール メタデータとは、テスト モジュール AndroidTest.xml に指定する追加情報のことを言います。このメタデータにより、モジュールに関する追加情報を指定し、モジュールをフィルタリングできます。
メタデータの例:
<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
メタデータのフィルタの例:
--module-metadata-include-filter component=framework
上記の例は、フレームワークをコンポーネント メタデータとして持つすべてのモジュールを実行します。
完全な AndroidTest.xml の例:
<configuration description="Config for CTS Gesture test cases">
    <option name="test-suite-tag" value="cts" />
    <!-- Metadata -->
    <option name="config-descriptor:metadata" key="component" value="framework" />
    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
    <!-- End: metadata -->
    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
        <option name="cleanup-apks" value="true" />
        <option name="test-file-name" value="CtsGestureTestCases.apk" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
        <option name="package" value="android.gesture.cts" />
        <option name="runtime-hint" value="10m50s" />
    </test>
</configuration>
パラメータ化されたモジュール
parameter は特別なメタデータ タイプです。
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
このメタデータは、標準のアプリモードではなく、Instant App のような別のモードでモジュールを実行する必要があることを示します。
利用可能なモードまたはパラメータはすべて ModuleParameters に記述され、関連するハンドラは ModuleParametersHelper に示されています。これにより、特定のモードで実行するようにモジュール設定を変更できます。
たとえば Instant App モードにすれば、APK のインストールが強制的に Instant モードになります。
パラメータ化を行うには、コマンドラインで次のようにして有効にする必要があります。
--enable-parameterized-modules
単一の特定のモードを次のようにして実行することも可能です。
--enable-parameterized-modules --module-parameter <Mode>
--enable-parameterized-modules --module-parameter INSTANT_APP
パラメータ化されたバージョンのモジュールを実行すると、結果はパラメータ化されたモジュール名で報告されます。たとえば、ベースの CtsGestureTestCases に対して CtsGestureTestCases[instant] と報告されます。
