ネイティブ テスト

通常、プラットフォームのネイティブ テストは、低レベル HAL にアクセスするか、さまざまなシステム サービスに対して raw IPC を実行します。したがって、テスト方法は通常、テスト対象のサービスと密接に関連しています。

gtest フレームワークを使用してネイティブ テストを構築します。これは、継続的なテスト インフラストラクチャと統合するための前提条件です。

プラットフォーム ソースのネイティブ テストの例を次に示します。

ステップの概要

  1. ネイティブ テスト モジュールの設定例については、frameworks/base/libs/hwui/tests/unit/ をご覧ください。
  2. テスト モジュール構成で BUILD_NATIVE_TEST ビルドルールを使用して、gtest 依存関係が自動的に含まれるようにします。
  3. テスト構成を作成します。シンプルおよび複雑なオプションをご覧ください。
  4. mmm または mma(増分ビルドかフルビルドかによって異なります)でテスト モジュールを作成します。次に例を示します。

    make hwui_unit_tests -j
    
  5. Atest を使用して、テストをローカルで実行します。

    atest hwui_unit_tests
    
    1. ネイティブ テストに引数を追加することもできます。特に有用なのは、ネイティブ テストのシェルコマンドに渡す追加のフラグ値を指定する native-test-flag と、テストのタイムアウト値をマイクロ秒単位で指定できる native-test-timeout です。

      atest test-name -- --module-arg test-name:native-test-flag:"\"argument1 argument2\"" \
      --module-arg test-name:native-test-timeout:60000
      
  6. Trade Federation テストハーネスでテストを実行します。

    make tradefed-all -j
    tradefed.sh run template/local_min --template:map test=hwui_unit_tests
    
  7. 手動でインストールして実行するには:

    1. 生成されたテストバイナリをデバイスにプッシュします。

      adb push ${OUT}/data/nativetest/hwui_unit_tests/hwui_unit_tests \
        /data/nativetest/hwui_unit_tests/hwui_unit_tests
      
    2. デバイスでテストバイナリを起動してテストを実行します。

      adb shell /data/nativetest/hwui_unit_tests/hwui_unit_tests
      

    ネイティブ テストが開始されます。テストバイナリに --help パラメータを追加して、テスト実行をカスタマイズする方法を詳しく調べることもできます。 その他のパラメータと使用方法については、gtest の詳細ガイドをご覧ください。