テストランナーは、呼び出しフローの実行ユニットです。そこで実際にテストが実行されます。
インターフェース
テストランナーは IRemoteTest インターフェースによって定義されます。このインターフェースはシンプルな run
メソッドを提供し、テストの実行時にはこのメソッドが呼び出されます。
これにより、実行するテストの最も簡単な定義ができます。しかし、実際にテストを作成するには、ビルドやデバイスの情報など、テストを適切に記述するためにさらに詳しい情報が必要になります。そのための便利なインターフェースを次に挙げます。
基本的なインターフェース
次の 2 つのインターフェースは、ほとんどのテストの基本的なニーズに対応しているため、現在最も広く使用されています。
- IBuildReceiver: ビルド プロバイダ ステップで作成された
IBuildInfo
オブジェクトをテストに取り込めます。これにはテストのセットアップに関連するすべての情報とアーティファクトが含まれています。 - IDeviceTest: テスト対象のデバイスを表し、そのデバイスを操作する API を提供する
ITestDevice
オブジェクトを TF が受信できるようにします。
高度なインターフェース
追加のインターフェースとして、テストハーネスとテストランナー間でより複雑なやり取りができるものがあります。
- ITestFilterReceiver: 特定のテストのみを実行するフィルタのセットをテストで受け取れます。これは、テストのサブセットを実行するときに役立ちます。
- ITestCollector: テストランナーが実際にテストを実行する代わりに、テストのドライランのみを実行できるようにします。これは、すべてのテストケースのリストを収集するときに役立ちます。
既存のテストランナー
さまざまなテストランナーが存在します。主なテストタイプは次のとおりです。
- AndroidJUnitTest / InstrumentationTest(デバイス側の AJUR に関連)
- googletest ライブラリを使用した GTest(デバイスとホスト側)
- ホストドリブン テスト(ホストで実行され、ホストからデバイスを呼び出す Java テスト)
- Pure Java 単体テスト(Google のテストランナーではどちらも実行できます)
- Python テスト
- ベンチマーク ライブラリを使用した Google ベンチマーク テスト
上記以外にも、起動テストなどの機能テストに特化した多数のカスタム テストランナーが存在しています。
新しいテストランナーを作成する
新しいテストランナーの作成についての詳しいガイダンスは、テストの作成に関するセクションをご覧ください。