我正在为我的应用程序测试一个文件导入操作的正确性。为了自动测试,我的计划是将我的测试资产目录中的文件复制到被测设备的下载文件夹中,并使用Espresso测试用例执行导入操作。测试用例的Android权限
有人有这方面的经验吗?我遇到了这样一个问题,即我的测试用例没有权限向设备写入任何内容。
到目前为止,我已经创建了一个专门的manifest.xml文件包含所需的权限我的测试应用程序:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
而且,我在执行此操作前我的测试开始给予必要的许可权测试用例:
012:adb shell pm grant com.my_app_pacakge.test android.permission.WRITE_EXTERNAL_STORAGE
不幸的是,当我在下载目录中创建该文件的以下异常,此刻我尽量写的内容备份文件抛出
Caused by: java.io.FileNotFoundException: /storage/emulated/0/Download/small_backup: open failed: EACCES (Permission denied)
相关的代码如下:
public void putBackupFile(String name ){
File backupFile = new File(Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DOWNLOADS).getPath(), name);
try {
InputStream is = InstrumentationRegistry.getInstrumentation().getContext().getAssets().open(name);
FileOutputStream fileOutputStream = new FileOutputStream(backupFile);
byte[] buffer = new byte[1024];
int len;
while ((len = is.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, len);
}
fileOutputStream.close();
is.close();
} catch (IOException e1) {
throw new RuntimeException(e1);
}
}
唯一的例外是在触发:FileOutputStream fileOutputStream = new FileOutputStream(backupFile);
发布您创建文件的代码。因为它可能是您尝试将路径应用于文件的问题。 – JoxTraex
更改了帖子以包含相关代码 – Peter
您是否尝试在应用程序中包含权限?我想我曾经有一个类似的问题,其中测试应用程序只能使用应用程序的权限 –