テストハーネス モードの実装

テストハーネス モードは、デバイスやデバイス群のテストを自動化するサードパーティ製アプリのデベロッパーを対象として、Android 10 に追加された機能です。この機能を使用すると、Android デバイスのすべてのユーザーデータをワイプし、ADB キーを保持して、初期設定画面をすべてスキップできます。これにより、ユーザーは手動による操作なしで起動直後に UI テストを実行できます。

カスタマイズ

ActivityManager.isRunningInUserTestHarness() を確認することで、デバイスがテストハーネス モードになっているかどうかを判別できます。カスタマイズは最小限に抑えてください。UI テストの中断や手動による操作の必要性が生じる設定画面(キーボード入力や設定ウィザード)のスキップなどにとどめます。

実装

PersistentDataBlockManagerInternal のデフォルト実装は PersistentDataBlockService にあります。テストハーネス モードは TestHarnessModeService 内で実装されています。

テストハーネス モードのデフォルト実装では、Factory Reset Protection と同じストレージ機構を使用して ADB キーを一時的に永続パーティションに格納します。テストデバイスに Factory Reset Protection が設定されている永続パーティションがすでにある場合、この機能をサポートするために必要な作業はほとんどありません。

永続パーティションを設定していない OEM の場合、TestHarnessModeService を実行するには PersistentDataBlockManagerInternal を実装する必要があります。

テストハーネス モードのステータスの確認

テストハーネス モードが有効になっている場合、ActivityManager.isRunningInUserTestHarness()true を返します。

テストハーネス モードの実行

テストハーネス モードを有効にすると、デバイスからすべてのデータが消去され、デバイスがテスト用に設定されます。つまり、デバイスのテストの妨げとなる可能性がある部分(自動同期アカウント、パッケージの確認、自動更新など)についてはすべてデフォルトで無効になりますが、ユーザーによって再度有効にできます。

adb コマンドを実行して、テストハーネス モードを有効にします。

adb shell cmd testharness enable