AndroidManifest.xml 用于 Espresso 测试
AndroidManifest.xml for Espresso testing
运行 使用 Android studio 进行 Espresso 测试时,我在写入内部存储时收到异常:
java.io.FileNotFoundException:/storage/emulated/0/MyCache:打开失败:EACCES(权限被拒绝)
我明白这个问题是由于权限不足造成的。
我的问题是,我是否必须为 Espresso 测试创建额外的 AndroidManifest 文件,还是应该使用应用程序本身的现有 AndroidManifest 文件?
我尝试了第二个选项,但我的应用程序 AndroidManifest.xml
似乎看不到 MainActivityTest
请参阅随附的打印屏幕:
无法理解你的问题。如果您的目标 sdk 是 marshmallow (sdk 24),那么您必须定义运行时权限。看看这个 https://developer.android.com/training/permissions/requesting.html
另一种解决方案是降级目标 sdk(尝试在您的 build.gradle 中执行此操作)或使用 target = 23
创建一个新项目
分享一些代码,以便我们了解问题的原因
您应该已经在 AndroidManifest.xml
中定义了该权限。如果您在 M+ 上 运行,您可能正在寻找与此类似的东西:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
getInstrumentation().getUiAutomation().executeShellCommand(
"pm grant " + getTargetContext().getPackageName()
+ " android.permission.WRITE_EXTERNAL_STORAGE");
}
这将授予您适当的外部存储访问权限
可以通过 InstrumentationRegistry.getTargetContext()
访问被测应用程序 (AUT) 上下文。因此,如果您在 AUT 中声明了所需的权限,那么您可以使用它的上下文。
其他可能性是将您的缓存文件保存在 AUT 中或测试应用程序包存储 - data/data/com.your.package/files/cache_file
。那么你根本不需要许可。
运行 使用 Android studio 进行 Espresso 测试时,我在写入内部存储时收到异常: java.io.FileNotFoundException:/storage/emulated/0/MyCache:打开失败:EACCES(权限被拒绝)
我明白这个问题是由于权限不足造成的。
我的问题是,我是否必须为 Espresso 测试创建额外的 AndroidManifest 文件,还是应该使用应用程序本身的现有 AndroidManifest 文件? 我尝试了第二个选项,但我的应用程序 AndroidManifest.xml
似乎看不到 MainActivityTest请参阅随附的打印屏幕:
无法理解你的问题。如果您的目标 sdk 是 marshmallow (sdk 24),那么您必须定义运行时权限。看看这个 https://developer.android.com/training/permissions/requesting.html
另一种解决方案是降级目标 sdk(尝试在您的 build.gradle 中执行此操作)或使用 target = 23
创建一个新项目分享一些代码,以便我们了解问题的原因
您应该已经在 AndroidManifest.xml
中定义了该权限。如果您在 M+ 上 运行,您可能正在寻找与此类似的东西:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
getInstrumentation().getUiAutomation().executeShellCommand(
"pm grant " + getTargetContext().getPackageName()
+ " android.permission.WRITE_EXTERNAL_STORAGE");
}
这将授予您适当的外部存储访问权限
可以通过 InstrumentationRegistry.getTargetContext()
访问被测应用程序 (AUT) 上下文。因此,如果您在 AUT 中声明了所需的权限,那么您可以使用它的上下文。
其他可能性是将您的缓存文件保存在 AUT 中或测试应用程序包存储 - data/data/com.your.package/files/cache_file
。那么你根本不需要许可。