Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于浓缩咖啡测试的AndroidManifest.xml_Android_Android Studio_Automated Tests_Android Manifest_Android Espresso - Fatal编程技术网

用于浓缩咖啡测试的AndroidManifest.xml

用于浓缩咖啡测试的AndroidManifest.xml,android,android-studio,automated-tests,android-manifest,android-espresso,Android,Android Studio,Automated Tests,Android Manifest,Android Espresso,使用Android studio运行Espresso测试时,我在写入内部存储时收到一个异常: java.io.FileNotFoundException:/storage/emulated/0/MyCache:open失败:EACCES(权限被拒绝) 我理解这个问题是由于缺乏权限造成的 我的问题是,我是否必须为浓缩咖啡测试创建额外的AndroidManifest文件,还是应该使用应用程序本身的现有AndroidManifest文件? 我尝试了第二个选项,但我的应用程序的AndroidManife

使用Android studio运行Espresso测试时,我在写入内部存储时收到一个异常: java.io.FileNotFoundException:/storage/emulated/0/MyCache:open失败:EACCES(权限被拒绝)

我理解这个问题是由于缺乏权限造成的

我的问题是,我是否必须为浓缩咖啡测试创建额外的AndroidManifest文件,还是应该使用应用程序本身的现有AndroidManifest文件? 我尝试了第二个选项,但我的应用程序的AndroidManifest.xml似乎看不到MainActivityTest

请参阅随附的打印屏幕:


无法理解您的问题。如果您的目标sdk是棉花糖(sdk 24),那么您必须定义运行时权限。看看这个

另一个解决方案是降级目标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\u文件
。那你根本不需要许可

写入内部存储器时使用的上下文是什么?我正在运行MainActivityTest,它是我的浓缩咖啡测试应用程序。可以通过
InstrumentationRegistry.getTargetContext()
访问测试中的应用程序(AUT)上下文。因此,如果您在AUT中声明了所需的权限,那么您可以使用它的上下文。另一种可能是将缓存文件保存在AUT或测试应用程序包存储中-data/data/com.your.package/files/cache_文件。那么你根本不需要权限。@denys在应用程序目录中存储数据对我来说很好,谢谢!我发表了我的评论作为回答,你可以批准它。我喜欢赏金:)