Я работаю над тестовым кодом для своего приложения, которое должно проверять правильность действия импорта файла. Чтобы автоматически протестировать это, я планирую скопировать файл из каталога тестовых активов в папку загрузки тестируемого устройства и выполнить действие импорта с помощью тестового примера Espresso.Android-разрешения для тестового теста
Есть ли у кого-нибудь опыт? Я сталкиваюсь с проблемой, что у моего тестового примера нет разрешения писать что-либо на устройство.
До сих пор я создал специальный файл manifest.xml для моего тестового приложения, содержащего требуемое разрешение:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Кроме того, я выполнить это действие, прежде чем мой тест начинает выдавать необходимое разрешение на тест:
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
Вы пытались включить разрешение также в свое приложение? Я думаю, что у меня когда-то была аналогичная проблема, когда тестовое приложение могло использовать разрешения только в приложении –