現在、ビルド サーバーで実行されるインストルメンテーション テスト スイートに取り組んでいますが、テストは通常の Android エミュレーターを使用する開発マシンではパスしますが、ビルド サーバーでは-no-window
フラグ付きのヘッドレス エミュレーターしか実行しないため、ビルドは失敗します。
InstrumentationTestCase.sendKeys()
オプション メニューをプログラムで開くメソッドを呼び出そうとすると、エラーが発生します。エラーは次のとおりです。
権限が拒否されました: pid 646 uid 10026 から uid 1000 が所有するウィンドウ Window{43d55100 paused=false} にキー イベントを挿入しています
その後、アクセス許可があることがわかりましたがINJECT_EVENTS
、マニフェストに設定しても効果がありませんでした。実際、ログには次の出力がありました。
android.permission.INJECT_EVENTS をパッケージ com.qype.radar に許可していません (protectionLevel=2 flags=0x6644)
この許可は役に立たないということですか?
また、インストルメンテーション テスト アプリとテスト対象のアプリが同じ Linux ユーザー ID を共有android:sharedUserId
し、同じプロセスで実行できるようにしようとしました ( android:process
-- 既にそうなっているかどうかはわかりませんでした) が、それでもうまくいきませんでした。
これは、ヘッドレス エミュレーターで重要なイベントを含むインストルメンテーションを実行することが現在不可能であることを意味するのでしょうか、それとも何か不足しているのでしょうか?