Тестовая резервная копия

  
Фреймворк для автоматического тестирования, который позволяет убедиться, что пользовательские данные и учетные данные аккаунта не будут утеряны при обновлении устройства и восстановлении из облака.
Последнее обновление Основная версия Релиз-кандидат Бета-версия Альфа-версия
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 и асинхронное выполнение Java ListenableFuture.
  • 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).