TF でデバイスを操作する

Trade Federation は、ITestDevice という抽象化を使用してテストを実行します。この抽象化は、次のような特徴を持つ最大公約数的な Android デバイスを対象にしています。

  • シリアル番号がある
  • 状態が、オンライン、使用可能、リカバリ、または使用不可のいずれか
  • 信頼性の概念がある。これは、たとえばコマンドを実行する場合、コマンドがまだ終了していないケース、コマンドの実行をデバイスがサポートしていないケース、コマンドの実行中にデバイスが応答しなくなったケースを区別できることを意味します。

デバイス クラス

ITestDevice の 3 つの主な実装は、3 つの一般的なユースケースを表します。

物理デバイス

これは、USB または adb の TCP 機能のいずれかを使用して TF ホストマシンに接続されている実際のハードウェア機器です。TestDevice クラスは、adb に対する Java インターフェースである ddmlib ライブラリ上にあります。そのため、adb devices にリストされている物理デバイスはすべてインスタンス化が可能で、TestDevice として使用できます。

エミュレータ

エミュレータは別のプロセスに存在するため、TF によって特別に処理されます。エミュレータを操作するには、コマンドの --emulator 引数を指定します。詳細については、LocalSdkBuildProviderSdkAvdPreparer をご覧ください。

デバイスなし

デバイスをまったく操作しないテストがあります。たとえば、あるサービスからファイルをダウンロードし、ファイル自体が有効かどうかを確認するだけの場合などです。NullDevice は、単なるスタブの ITestDevice です。null-device-N のようなシリアル番号を持ち、試行されるオペレーションのほとんどは、黙示的に何もしないか、例外をスローします。