Espresso UI 测试截图 - 没有写入外部存储权限的应用程序
Posted
技术标签:
【中文标题】Espresso UI 测试截图 - 没有写入外部存储权限的应用程序【英文标题】:Espresso UI Test take screenshot - app without write external storage permission 【发布时间】:2018-05-28 10:58:22 【问题描述】:我正在用 Espresso 为 android 应用编写 UI 测试。我需要截屏来验证 UI,我通过UiDevice.takeScreenshot() 方法进行。
这个方法抛出异常是因为app没有写权限,为了运行这个UI测试,我需要在AndroidManifest中专门添加android权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
然后执行app,进入安卓设置,开启这个权限;然后我可以运行 UI 测试。之后我需要回到 AndroidManifest,删除这个权限(因为我只需要 UI 测试)。
有没有更简洁的方法来实现这一点,而无需触摸 AndroidManifest 并自动授予 UI 测试的写入外部存储权限?
【问题讨论】:
写入不需要此类权限的目录。 【参考方案1】:您可以将<uses-permission>
元素放在androidTest/
源集中的AndroidManifest.xml
文件中,因此它不会影响您的生产代码。
要在测试期间自动授予运行时权限,您可以尝试the new GrantPermissionRule
。或者,使用 other techniques 授予权限作为测试套件的一部分。最后,他们都使用:
adb shell pm grant com.package.myapp android.permission.<PERMISSION>
adb shell pm revoke com.package.myapp android.permission.<PERMISSION>
...来自 Gradle 或您的测试代码。
【讨论】:
以上是关于Espresso UI 测试截图 - 没有写入外部存储权限的应用程序的主要内容,如果未能解决你的问题,请参考以下文章
从 Maps Intent espresso 回到活动 - UI 测试
使用 Espresso for APK 编写 UI 测试,无需源代码
Android Espresso UI 测试 - 测试运行失败:仪器运行因“java.lang.IllegalAccessError”而失败
Android Studio 2.2 Espresso Test Recorder-----解放双手,通过录制测试过程实现测试