私はエスプレッソとUIAutomatorを使用してテストケースを作成しています。拒否されたときと許可されているときに、外部のストレージのアクセス許可をテストしています。 私は、テストケースの開始時にすべてが取り消される許可を必要とする異なるテストケースを持っています。 しかし、いくつかのテストケースでは許可が得られるはずです。その結果、次のテストが実行されるときに許可を取り消す必要があります。 私が検索したのは、PMマネージャを使用してadbシェルコマンドを実行して権限を取り消すことです。しかし、そうすることによって、私は次のエラーを取得します。 'process crash'のためにInstrumentation runが失敗しました。すべてのテストケースの始めに権限が取り消されるようにする方法はありますか?そうでない場合は、テストアクセス権に関してこの問題をどのように解決できますか?ご協力いただきありがとうございます。Androidは各テストの開始時に権限を取り消します
これは私が現在、(動作しない)各テストケースの前に許可を取り消すために持っているコードスニペットです:上記のコードスニペットとの許可を取り消すしようとしたとき
@Before
public void setUp() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getInstrumentation().getUiAutomation().executeShellCommand(
"pm revoke " + getTargetContext().getPackageName()
+ " android.permission.WRITE_EXTERNAL_STORAGE");
}
}
はエラーメッセージを対応:
Test failed to run to completion. Reason: 'Instrumentation run failed due to 'Process crashed.''.
私はまた、これら2つの投稿:thisとthisを見に来ました。
これは間違っているかもしれませんが(ロリポップデバイスはありません)、ロリポップには「取り消し」というadbコマンドがありますか?それはM +だけで利用できるのではないのですか? – Ryan
こんにちはRyan、私は信じていますが、if文の中でコマンドをラップした後にエラーが消えてしまいます。そして私がテストしているエミュレータはAndroid 6.0です。 –
許可管理を模擬する方法はありませんか? –