Android Studio for Platform(ASfP)は atest および Soong テスト モジュールと統合されているため、IDE から Linux ホストマシン、接続されたデバイス、Cuttlefish 仮想デバイスでプラットフォーム テストを実行してデバッグできます。
前提条件
- AOSP チェックアウトと
lunchターゲットで構成された ASfP プロジェクトを開きます。 - デバイステストの場合は、実機を接続するか、一致するビルドを実行している Cuttlefish 仮想デバイスを起動します。
テストの実行とデバッグ
ASfP の複数の場所からプラットフォーム テストとデバッグ セッションを起動できます。
Android.bpテスト ターゲット:Android.bpファイルを開き、テスト モジュール(*_testまたは*_test_host)の横のガターで [実行] をクリックします。- 実行: すべての Soong テスト モジュール タイプ(
android_test、java_test_host、cc_test、rust_test、python_test、sh_test、android_robolectric_test)で利用できます。 - デバッグ:
android_testモジュール(atest --wait-for-debuggerを使用して Java デバッガに接続)と C++ または Rust テスト モジュール(cc_test、cc_test_host、rust_test、rust_test_host、ASfP の組み込み LLDB デバッガで起動)で使用できます。
- 実行: すべての Soong テスト モジュール タイプ(
- ソースファイルのガターアイコン: ソースコード内のテストクラスまたは
@Testメソッドの横にある [実行] をクリックして、その特定のテストを実行またはデバッグします。 - 右クリックのコンテキスト メニュー: テストファイル、クラス、メソッド、
Android.bpモジュールを右クリックし、[Run] または [Debug] を選択します。 - 組み込みエージェント(Android Studio の AI): エージェント ツール ウィンドウで、組み込みエージェントは
atestターゲットを実行して、コード編集後の変更を検証できます。 - 統合ターミナル: [View] > [ツール ウィンドウ] > [Terminal] を開いて、
atestコマンドを直接実行します。
スマートテストの構成とデバッグ
ガターまたはコンテキスト メニューからテストを起動すると、ASfP は Android.bp モジュール グラフを使用して Soong Test 実行構成を作成して構成します。
android_test Java と Kotlin のターゲットをデバッグする
Android.bp の android_test モジュールの横、または Java または Kotlin の JUnit クラスまたは @Test メソッドの横にあるガターアイコンをクリックし、[Debug '<TestName>'] を選択します。ソースファイルのガターから、ASfP は、srcs にファイルが含まれ、構成に <module>、<module>:<SimpleClass>、または <module>:<SimpleClass>#<method> という名前が付けられている最も近い囲み android_test モジュールを選択します。
ASfP は --wait-for-debugger で atest を実行し、モジュールの AndroidManifest.xml からターゲットの package 属性を読み取り、接続されたデバイスでそのプロセスを待機して、Java デバッガをアタッチします。

LLDB で cc_test ターゲットと rust_test ターゲットをデバッグする
C++ または Rust のテスト モジュール(cc_test、cc_test_host、rust_test、rust_test_host)をデバッグするには、Android.bp ガターアイコンをクリックして、[Debug '<TestName>'] を選択します。ASfP は、atest を介して実行するのではなく、組み込みの LLDB デバッガでコンパイルされたテスト バイナリを起動します。
Soong テスト実行構成を設定する
[Run] > [Edit Configurations] を開き、Soong Test 構成を選択して、テストのビルド、デプロイ、起動方法をカスタマイズします。
- モジュールの自動補完と
Android.bpナビゲーション: [Module] フィールドは、プロジェクト内のインデックス登録された Soong テスト モジュールから自動補完されます。フィールドの横にある [Go to Android.bp] をクリックして、Android.bpのモジュールの宣言に移動します。 - 実行対象: デバイスまたはホスト(
host_supported: trueを含む): ASfP は、モジュールルールとその推移的なdefaultsチェーン(host_supported、device_supported、enabled、target.android.enabled、target.host.enabled)を評価します。- デュアル ターゲット テスト(
cc_testとrust_test、host_supported: trueを含む): [デバイス] と [ホスト] の両方のラジオボタンが使用可能です(デフォルトは [デバイス])。デバイスとホストはそれぞれ、独自の独立した LLDB デバッガ テンプレートを保持します。[Run on] を [Device] と [Host] の間で切り替えると、各ターゲットで行われたカスタマイズを保持しながら、リモート デバイスのlldb-server構成とローカルホストのバイナリ構成が入れ替わります。 - 単一ターゲット テスト: C++ または Rust のテストが 1 つの環境(デバイスのみの
cc_test、ホストのみのcc_test_hostまたはrust_test_hostなど)でのみビルドされる場合、ASfP はサポートされているターゲットを選択し、サポートされていないラジオボタンを無効にして、説明ツールチップを表示します: 「<module> (<ruleType>) doesn't build for the host or device.」
- デュアル ターゲット テスト(
- リリース前タスク(ネイティブ テスト モジュールのビルドと atest によるデプロイ): すべての Soong テスト設定には、デフォルトで 2 つのリリース前タスクが含まれています。
- ネイティブ テスト モジュールをビルド: LLDB を開始する前に、
<module>-target(デバイスの場合)または<module>-host(ホストの場合)をビルドします。 - atest でデプロイ: デバイスでデバッグする場合、
atest <module> --collect-tests-only --disable-teardown -it -s <serial> -- --abi <abi>を実行して、LLDB がバイナリを起動する前に Tradefed がテスト依存関係をプッシュし、ターゲット プリペアラを実行します。[Deploy with atest] チップにカーソルを合わせると、正確なatestコマンドをプレビューできます。依存関係がすでにデバイスにある場合のイテレーションを高速化するには、atest でデプロイを削除して、ASfP がテスト バイナリのみを直接プッシュするようにします。[Run on: Host] を選択すると、ASfP は自動的に [Deploy with atest] をスキップします。
- ネイティブ テスト モジュールをビルド: LLDB を開始する前に、
- オプションとデバッガを変更する(LLDB オプション カード): [オプションを変更] を使用して、オプションの構成フィールドを追加します。
- プログラム引数(オペレーティング システム、C++ と Rust のテストのみ): デバッグ時に
--gtest_filterまたはlibtestフィルタの後にcc_testまたはrust_testバイナリに直接渡される追加の引数。 - atest 引数(テスト): テストの実行時、または atest でデプロイを使用してデバイスを準備する際に
atestに渡される追加のフラグ。 - デバッガ(C++ と Rust のテストのみ): [モジュール] が
cc_test*またはrust_test*ターゲットの場合に表示されます。[LLDB options] カード(Stop on entry、Cache symbols across sessions、Load symbols on demand、Rust テスト用の With Rust visualizers など)を切り替え、[Reset to defaults] をクリックしてアクティブな [Device] または [Host] テンプレートをリセットするか、[Modify options > Debugger] から [Symbol directories]、[Init, Pre-run, Post-run, or Exit commands]、[Launch JSON]([DAP Settings])を追加します。
- プログラム引数(オペレーティング システム、C++ と Rust のテストのみ): デバッグ時に

テスト結果を表示する
テストの実行状況、合格または不合格のステータス、スタック トレース、デバイスログは、ASfP の [実行] または [デバッグ] ツール ウィンドウにリアルタイムで表示されます。
テストのヒント
- ターゲット テストを実行する: テストスイート全体を実行せずに、エディタのガターから個々のメソッドをテストします。
- Cuttlefish スナップショットを使用する: Cuttlefish 仮想デバイスでデバイス テストを実行するときに、スナップショットを使用して実行間でクリーンなデバイス状態を復元します。
- Soong ビルドログを調べる: テストが実行前にコンパイルに失敗した場合は、Soong ツール ウィンドウでコンパイラの診断情報を確認します。