Тестовая резервная копия
| Последнее обновление | Основная версия | Релиз-кандидат | Бета-версия | Альфа-версия |
|---|---|---|---|---|
| 21 октября 2026 г. | - | - | - | 1.0.0-alpha03 |
Объявление зависимостей
Чтобы добавить зависимость от тестового резервного копирования, добавьте в проект репозиторий Google Maven. Подробную информацию можно найти в статье Репозиторий Google Maven.
Добавьте зависимости для нужных артефактов в файл build.gradle приложения или модуля:
Яркий
dependencies { implementation "androidx.test.backup:backup:1.0.0-alpha03" implementation "androidx.test.backup:backup-host:1.0.0-alpha03" }
Kotlin
dependencies { implementation("androidx.test.backup:backup:1.0.0-alpha03") implementation("androidx.test.backup:backup-host:1.0.0-alpha03") }
Подробнее о добавлении зависимостей сборки…
Отзыв
Ваши отзывы помогают нам улучшать Jetpack. Если вы обнаружите новые проблемы или у вас появятся идеи по улучшению этой библиотеки, сообщите нам. Прежде чем сообщать о новых ошибках, изучите уже добавленные. Вы можете проголосовать за существующую проблему, нажав кнопку со звездочкой.
Дополнительную информацию можно найти в документации по системе отслеживания ошибок.
Тест автоматического восстановления резервной копии, версия 1.0
Версия 1.0.0-alpha03
21 октября 2026 г.
Данные "androidx.test.backup:backup:1.0.0-alpha03" и "androidx.test.backup:backup-host:1.0.0-alpha03" опубликованы. Версия 1.0.0-alpha03 содержит эти коммиты.
Новые функции
- Упрощенная настройка тестирования в наборах тестов резервного копирования плагина Android Gradle за счет автоматического таргетинга на тестируемое приложение, если
@BackupRestoreConfigне указан. (I1452b) - Добавлена поддержка наследования настроек
@BackupRestoreConfigи@Isolationиз внешнего тестового класса в тестовых классах@Nested. (Ia45a8) - Добавлена поддержка внедрения
BackupRestoreControllerнепосредственно в конструкторы тестовых классов и методы настройки@BeforeAll. (I6e822, Ia2ebd) - Добавлена поддержка закрепления определенного устройства за ролью
@Deviceв тестах с несколькими устройствами с помощью свойстваandroidx.test.backup.device.serial.{role}. (I484be)
Исправление ошибок
- Исправлены ошибки
performBackupиperformRestore, из-за которых тесты немедленно завершались сбоем, а не проходили без уведомлений, когда резервная копия пропускалась или была пустой, когда служба резервного копирования выдавала ошибку или когда локальный архив резервной копии принадлежал другому приложению или устройству. (I7673d, I478ad, I0b989, I9a0ea, I79567) - Исправлена ошибка, из-за которой тесты зависали на неотвечающих устройствах. Теперь для резервного копирования, восстановления, действий на устройстве и очистки заданы ограничения по времени. (I10661, I9cdee, If5f92)
- Исправлена ошибка, из-за которой
performBackupудалял сгенерированные файлы резервных копий после завершения тестового запуска. Теперь архивы резервных копий сохраняются на диске после завершения тестов. (I8c13f) - Исправлены вспомогательные средства тестирования баз данных (
StorageDomain.Database), чтобы правильно хранить и проверять значенияnull, перезаписывать существующие строки при заполнении тестовых данных, заранее обнаруживать недопустимые конфигурации таблиц и сообщать об ошибке, когда ожидаемый файл базы данных отсутствует. (Ib4767, Iddf87, I19c43, Ie8d78, I8bc18) - Исправлены вспомогательные функции тестирования
SharedPreferences, чтобы точно сохранять типы данных и поддерживать проверку на наличиеnullили удаленных настроек. (I8456d9, I1d0fc2) - Исправлена ошибка, из-за которой
runOnDeviceне мог обрабатывать большие тестовые полезные нагрузки без сбоев. Теперь он приостанавливает работу отладчика, когда включен параметрwaitForDebugger, находит средство запуска тестов в названиях пакетов APK для пользовательских тестов и блокирует утечку внутренних флагов средства запуска в действия на устройстве. (Ic73bd, Iede17, I1d172, I84c15) - Повышена стабильность и скорость тестирования за счет использования одного подключения ADB на протяжении всего теста, установки APK только один раз на устройство и четкого сообщения об ошибке, если APK не удается установить или запустить. (I62717, Iabf75, I14e6f, I4c3da5, I54077, Iee84e)
- Исправлена ошибка, из-за которой
fetchDeviceLogsзаписывал пустые файлы журналов, а отмененные тестовые запуски генерировали ложные отчеты о сбоях. (I736c4, I7b199, Ia847e) - Очищены зависимости
backup-host, поэтомуadblibдоступен непосредственно вызывающим объектам, а внутренние библиотеки ведения журнала или тестирования больше не конфликтуют с путем к классам вашего проекта. (I6e822, Iba9a4, Ib4ec9)
Версия 1.0.0-alpha02
7 октября 2026 г.
Данные "androidx.test.backup:backup:1.0.0-alpha02" и "androidx.test.backup:backup-host:1.0.0-alpha02" опубликованы. Версия 1.0.0-alpha02 содержит эти коммиты.
Изменения в API
- Ключи полезной нагрузки теперь задокументированы как
BackupActionInputKeys,BackupActionOutputKeysиBackupActionValues, заменяя константы вBackupDeviceAction. Добавлены фабрикиBackupDeviceActionResult.success()иfailure(), а также методы доступаisSuccessиerrorMessage. (Ibd493)
Исправление ошибок
- Теперь
BackupRestoreController.clearAppDataвыдаетIOException, еслиpm clearне сообщает об успехе, вместо того чтобы продолжать работу без уведомления. (I61556) - Аргументы оболочки, передаваемые в
BackupRestoreControllerдля выполнения на устройстве, теперь экранируются правильно. Это позволяет предотвратить внедрение команд и обеспечить безопасную обработку путей к файлам с пробелами. - Усилены действия с хранилищем (
PopulateStorageActionиAssertStorageAction), чтобы предотвратить скрытые проверки и обеспечить строгий сбой тестов при отсутствии ожидаемых данных. - Оркестраторы тестов на стороне хоста теперь корректно учитывают ошибки внутриполосных действий, о которых сообщает устройство, а не игнорируют их.
- Исправлена ошибка, из-за которой строки базы данных заполнялись неправильно. Теперь формат передачи данных
'values'кодируется в процентах, что предотвращает повреждение данных при передаче полезной нагрузки. - Устранены уязвимости в
androidx.test.backup:backup-hostпутем обновления зависимостей.
Версия 1.0.0-alpha01
23 сентября 2026 г.
Данные "androidx.test.backup:backup:1.0.0-alpha01" и "androidx.test.backup:backup-host:1.0.0-alpha01" опубликованы. Версия 1.0.0-alpha01 содержит эти коммиты.
Функции в первой версии
Первый выпуск фреймворка для тестирования автоматического резервного копирования и восстановления на Android. Эта библиотека позволяет автоматически тестировать, сохраняются ли пользовательские данные и учетные данные аккаунта при обновлении устройства и восстановлении из облака. Вместо того чтобы полагаться на ручное тестирование, разработчики могут автоматизировать весь жизненный цикл: заполнение состояния приложения, его резервное копирование в соответствии с настроенными правилами (dataExtractionRules и fullBackupContent), очистку приложения и проверку целостности данных после восстановления. Фреймворк предоставляет два артефакта: androidx.test.backup:backup-host (запускается на хост-компьютере для управления резервным копированием, удалением и восстановлением данных через ADB) и androidx.test.backup:backup (запускается на устройстве для заполнения и проверки данных приложения).
BackupRestoreController– основной интерфейс на стороне хоста, используемый для управления резервным копированием, удалением данных, восстановлением и проверкой на тестовом устройстве. Предоставляет удобные конвейеры, такие какrunBackupRestoreFlow, а также детализированные операции (performBackup,performRestore,clearAppData,fetchDeviceLogsиrunOnDevice). Поддерживает сопрограммы Kotlin и асинхронное выполнение JavaListenableFuture.BackupRestoreExtension– расширение JUnit 5 Jupiter, которое разрешает и вставляет параметрыBackupRestoreControllerв методы тестирования. Управляет отдельными или общими сеансами ADB, автоматически устанавливает тестируемые и тестовые APK-файлы, отключает экраны блокировки и блокировку клавиатуры для разблокировки хранилища, защищенного учетными данными, и обеспечивает изоляцию тестовой песочницы.BackupRestoreTestRunner– средство запуска тестовInstrumentationна устройстве, которое работает в тестовой среде приложения. Динамически разрешает и выполняет запрошенные реализацииBackupDeviceAction, отправленные оркестраторами хоста, и безопасно перенаправляет большие полезные нагрузки результатов JSON на диск, чтобы предотвратить ограничения буфера транзакций Binder.BackupDeviceAction– контракт для специальных действий на стороне устройства, которые выполняются непосредственно в песочнице целевого приложения во время заполнения данными (PHASE_POPULATE) или проверки после восстановления (PHASE_VERIFY).StorageDomain. Строго типизированные дескрипторы (Preference,Database,TextFileиBinaryFile), используемые вместе с предварительно созданными помощниками действий (PopulateStorageActionиAssertStorageAction) для автоматического заполнения и подтвержденияSharedPreferences, баз данных SQLite и необработанных файлов в контекстах хранилища с защитой учетных данных (CE) и защитой устройства (DE) без шаблонного кода.BackupTransportMode– топология передачи резервных копий, которая будет имитироваться во время тестирования. Возможные значения:DEVICE_TO_DEVICE(перенос данных между физическими устройствами через USB или Wi-Fi Direct),CLOUD_ENCRYPTED(резервное копирование в облако со сквозным шифрованием на стороне клиента),CLOUD_UNENCRYPTED(стандартное резервное копирование в облако) иLOCAL(офлайн-копирование в локальную файловую систему).@Deviceи@Isolation. Аннотации хоста для выбора подключенных устройств, соответствующих определенным серийным номерам, уровням API или ролям в многоустройственной среде, а также для настройки политик изоляции песочницы между тестовыми запусками (IsolationPolicy.AUTOMATICиIsolationPolicy.MANUAL).