我正在Espresso中为Android应用编写UI测试。我需要截取屏幕截图来验证用户界面,我是通过UiDevice.takeScreenshot()方法完成的。
此方法抛出异常,因为该应用程序没有写入权限,为了运行此UI测试,我需要在AndroidManifest中专门添加android权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
然后执行应用,转到Android设置,启用此权限;然后我可以运行UI测试。之后我需要回到AndroidManifest,删除此权限(因为我只需要它进行UI测试)。
有没有更简洁的方法来实现这一点,而无需触及AndroidManifest并自动为UI测试授予写外部存储权限?
答案 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或您的测试代码。