Espresso UI Test снимок экрана - приложение без разрешения записи на внешнее хранилище - PullRequest
0 голосов
/ 28 мая 2018

Я пишу тест пользовательского интерфейса в Espresso для приложения для Android.Мне нужно сделать снимок экрана, чтобы проверить пользовательский интерфейс, я делаю это с помощью метода UiDevice.takeScreenshot () .

Этот метод вызывает исключение, потому что приложение не имеет записиразрешения, чтобы запустить тесты пользовательского интерфейса, мне нужно специально добавить разрешение Android в AndroidManifest:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Затем запустите приложение, перейдите в настройки Android, включите это разрешение;и тогда я могу запустить тест пользовательского интерфейса.После этого мне нужно вернуться в AndroidManifest, удалить это разрешение (потому что оно мне нужно только для тестов пользовательского интерфейса).

Есть ли более понятный способ добиться этого, не касаясь AndroidManifest и автоматически предоставляя запись на внешнее хранилищеразрешение только для тестов пользовательского интерфейса?

1 Ответ

0 голосов
/ 28 мая 2018

Вы можете поместить элемент <uses-permission> в файл AndroidManifest.xml в исходном наборе androidTest/, чтобы он не влиял на ваш производственный код.

Чтобы автоматически предоставлять разрешение времени выполнения во время тестов, выможно попробовать новый GrantPermissionRule.Или используйте другие методы , чтобы предоставить разрешение как часть вашего набора тестов.В конце они все используют:

adb shell pm grant com.package.myapp android.permission.<PERMISSION>
adb shell pm revoke com.package.myapp android.permission.<PERMISSION>

... либо из Gradle, либо из вашего тестового кода.

...