2

Я работаю над тестовым кодом для своего приложения, которое должно проверять правильность действия импорта файла. Чтобы автоматически протестировать это, я планирую скопировать файл из каталога тестовых активов в папку загрузки тестируемого устройства и выполнить действие импорта с помощью тестового примера 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);

+0

отправьте код для создания файла. Потому что это может быть проблема с попыткой применить путь к файлу. – JoxTraex

+0

Изменен пост, чтобы включить соответствующий код – Peter

+0

Вы пытались включить разрешение также в свое приложение? Я думаю, что у меня когда-то была аналогичная проблема, когда тестовое приложение могло использовать разрешения только в приложении –

ответ

0

Ответ к первоначальному вопросу: Если вы предоставляете android.permission.WRITE_EXTERNAL_STORAGE от ADB, вы должны предоставить android.permission.READ_EXTERNAL_STORAGE, а также:

adb shell pm grant com.my_app_pacakge.test android.permission.READ_EXTERNAL_STORAGE 

Казалось бы, что если один просят WRITE разрешения в приложении, разрешение READ запрашивается/предоставляется автоматически. Если это делается из adb, разрешение READ должно быть предоставлено дополнительно.

0

я понял, что appraoch государства в мой вопрос был не самый лучший подход: я решил это в другим способом: передача необходимых файлов с помощью командной строки adb:

adb push small_backup/mnt/sdcard/Загрузить

Это утверждение интегрировано в мою тестовую установку (выполняется перед запуском теста). В тестовом случае я считаю само собой разумеющимся, что требуемые файлы доступны.

Смежные вопросы