Espresso UI Test采用截图 - 应用程序,无需写入外部存储权限

时间:2018-05-28 10:58:23

标签: android android-espresso uiautomator uidevice

我正在Espresso中为Android应用编写UI测试。我需要截取屏幕截图来验证用户界面,我是通过UiDevice.takeScreenshot()方法完成的。

此方法抛出异常,因为该应用程序没有写入权限,为了运行此UI测试,我需要在AndroidManifest中专门添加android权限:

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

然后执行应用,转到Android设置,启用此权限;然后我可以运行UI测试。之后我需要回到AndroidManifest,删除此权限(因为我只需要它进行UI测试)。

有没有更简洁的方法来实现这一点,而无需触及AndroidManifest并自动为UI测试授予写外部存储权限?

1 个答案:

答案 0 :(得分:0)

您可以将<uses-permission>元素放在AndroidManifest.xml源集中的androidTest/文件中,这样就不会影响您的生产代码。

要在测试期间自动授予运行时权限,您可以尝试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或您的测试代码。