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

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