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】:

您可以将&lt;uses-permission&gt; 元素放在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 测试截图 - 没有写入外部存储权限的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

回到地图意图espresso - UI测试的活动

从 Maps Intent espresso 回到活动 - UI 测试

使用 Espresso for APK 编写 UI 测试,无需源代码

Android Espresso UI 测试 - 测试运行失败:仪器运行因“java.lang.IllegalAccessError”而失败

java Espresso UI测试命令

Android Studio 2.2 Espresso Test Recorder-----解放双手,通过录制测试过程实现测试