Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

TF でホスト側のデバイスレス テストを作成する

このページでは、Linux GCE インスタンスで実行するテストなど、デバイスを必要としないホスト側でのテストを作成する方法について説明します(デバイスを必要とするホストドリブン テストの作成についての詳細は、Trade Federation でホストドリブン テストを作成するをご覧ください)。

ホスト側のテストの種類

Trade Federation(TF)を使用して、数種類のホスト側のテストを実行できます。

ネイティブ(gtest)テスト

プラットフォームをテストするためのネイティブ テスト(gtests)を作成します。テストにデバイスが必要ない場合は、ホストで実行します。そうすることで、テストの実行がはるかに高速になります。このようなテストをテストホストで実行するように設定するには、TF ランナー HostGTest を使用します。

以下に、Tradefed テスト設定の例を示します。

<configuration description="Runs hello_world_test.">
    <option name="null-device" value="true" />
    <test class="com.android.tradefed.testtype.HostGTest" >
        <option name="module-name" value="hello_world_test" />
    </test>
</configuration>

上記のテスト設定は、ホストで gtest テスト(hello_world_test)を実行します。このテスト設定例は自動生成できます。テストに特別なセットアップやクリーンアップが必要ない場合は、テスト設定の自動生成機能を使用するだけで、適切な TF テスト設定を作成できます。

ホスト側の gtest を設定し、テスト設定の自動生成を有効にするには、hello_world_test でそうしているように、Android.bphost_supportedtrue に設定します。

ネイティブ テストの作成方法の詳細については、新しいネイティブ テスト例の追加をご覧ください。

JAR(Java)ホストテスト

JUnit などの JAR ホストテストは、デバイス上で実行する必要がなく、Java プロジェクトのコード カバレッジを提供するテストです。このようなテストは、ランナー HostTest を使用して、テストホストで実行するように設定できます。

Tradefed テスト設定の例:

<configuration description="Executes HelloWorldHostTest">
    <test class="com.android.tradefed.testtype.HostTest" >
        <option name="jar" value="HelloWorldHostTest.jar" />
    </test>
</configuration>

上記のテスト設定は、ホスト側 JUnit テスト HelloWorldHostTest を実行します。なお、このテスト設定は自動生成できます。テストに特別なセットアップやクリーンアップが必要ない場合は、テスト設定の自動生成機能を使用するだけで、適切な Tradefed テスト設定を作成できます。

JAR ホストテストの作成方法の詳細については、JAR(Java)ホストテストのページをご覧ください。

分離 Java ホストテスト

デバイスレス Java テストは、パフォーマンスをほとんど低下させることなく分離環境で実行できます。ただし、分離環境の使用を決めるにあたっては、重要な点をいくつか考慮する必要があります。

  • 分離環境では、Tradefed は JUnit テストのみをサポートします。
  • 静的にリンクされた依存関係のみがサポートされます。lib で宣言された依存関係は、クラスパスに含まれません。
  • 分離ランナーは、shim ランナーとテスト JAR のみをクラスパスに配置します。
  • このランナーでテストを実行するごとに、ある程度の固定オーバーヘッドが発生します。
  • 自動生成機能は使用できません。したがって、テスト用の AndroidTest.xml ファイルを自分で作成する必要があります。

Tradefed テスト設定(分離環境)の例

<configuration description="Executes HelloWorldIsolatedHostTest">
    <test class="com.android.tradefed.testtype.HostTest" >
        <option name="jar" value="HelloWorldHostTest.jar" />
    </test>
</configuration>

Python テスト

テストロジックが Python で記述されている場合は、ビルドタイプ python_test_host を使用して、TF の PythonBinaryHostTest で実行できる par ファイルを作成します。

Tradefed テスト設定の例

<configuration description="Config to run atest unittests">
    <test class="com.android.tradefed.testtype.python.PythonBinaryHostTest" >
        <option name="par-file-name" value="atest_unittests" />
        <option name="test-timeout" value="2m" />
    </test>
</configuration>

テストスイートの設定

特定のビルドで TF がホスト側のテストにアクセスできるようにするには、テスト モジュールの `test_suites` 設定を `general-tests` にします。

test_suites: ["general-tests"],

この設定により、テストは test_suites ターゲットの general-tests.zip にパッケージ化されます。