デバイス側のテスト(インストルメンテーション テスト、UI Automator テストなど)を実行する場合、ホスト側のコレクタはデバイス上で実行されるテストに指標収集を同期させることが難しいため、使用に適さないことがあります。たとえば、非同期でスクリーンショットを撮影すると、目的の画面を撮り損なって無駄になる可能性が高くなります。
このようなユースケースに対応するためにデバイス側のコレクタが存在し、「AndroidJUnitRunner」インストルメンテーションで使用できます。BaseMetricListener を実装すると、Tradefed レポート パイプラインと完全な互換性がある方法で収集された指標を自動的に報告できます。
このライブラリは Tradefed 自体からは分離されており、Tradefed なしで使用できます。
Tradefed の「AndroidJUnitTest」ランナーを使用している場合は、次のコマンドライン オプションを指定するだけで、コレクタをテストとともに実行できます。
--device-listeners android.device.collectors.ScreenshotListener
LOCAL_STATIC_JAVA_LIBRARIES += collector-device-lib
実装
基本クラス BaseMetricListener
の上に実装する場合、インストルメンテーションのライフサイクル中に指標を収集するタイミングを選択できます。
- テスト実行の開始時:
onTestRunStart
- テストケースの開始時:
onTestStart
- テストケースの終了時:
onTestEnd
- テストケースの不合格時:
onTestFail
- テスト実行の終了時:
onTestRunEnd
インタラクション
デバイス側の指標の集計は、インストルメンテーションの実行自体と同期して行われます。指標はインストルメンテーション結果に渡され、Tradefed によって解析されて呼び出しの一環として報告されます。