Поскольку улучшенная конфиденциальность изменяется на Android 10 Android 10 Изменения конфиденциальности , я заметил, что мое правило отслеживания ошибок скриншотов в Kotlin, которое расширяет Espresso BasicScreenCaptureProcessor, больше не сохраняет скриншоты с ошибками, потому что я использую устаревшую getExternalStoragePublicDirectory
на Android 10.
В настоящее время реализуемая концепция очень похожа на Как сделать снимок экрана в точке, когда тест не пройден в Espresso?
class TestScreenCaptureProcessor : BasicScreenCaptureProcessor() {
init {
this.mDefaultScreenshotPath = File(
File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
"Failure_Screenshots"
).absolutePath
)
}
Как видно из других постов, я мог бы использовать getInstrumentation().getTargetContext().getApplicationContext().getExternalFilesDir(DIRECTORY_PICTURES)
, который бы сохранял файл в каталоге - /sdcard/Android/data/your.package.name/files/Pictures
, но задача connectedAndroidTest
gradle удаляет приложение в конце, вместе с ним, перечисленные выше папки.
Мне было интересно, сталкивался ли кто-нибудь с чем-то подобным и рассматривал ли способ хранения скриншотов с ошибками на Android 10 в месте, которое не будет удалено когда тестирование закончится, и где-нибудь к нему могут получить доступ тесты Espresso Instrumentation
Мои тесты пользовательского интерфейса выполняются на различных устройствах, поэтому требуется универсальный c способ хранения файлов, необходимый для всех моделей.