Архив заметок о выпуске теста

AndroidX Test Espresso 3.1.1, Runner 1.1.1, Rules 1.1.1, Monitor 1.1.1 AndroidTestOrchestrator 1.1.1, Core 1.1.0, Truth 1.1.0, JUnit 1.1.0 (2018-12-13)

Это стабильная версия AndroidX Test 1.1.0.

  • Основной
    • Сделайте так, чтобы ActivityScenario поддерживал действия, которые запускают другое действие.

AndroidX Test Espresso 3.1.1-beta01, Runner 1.1.1-beta01, Rules 1.1.1-beta01, Monitor 1.1.1-beta01 AndroidTestOrchestrator 1.1.1-beta01, Core 1.1.0-beta01 Truth 1.1.0-beta01, JUnit 1.1.0-beta01 (2018-12-06)

  • Основной
    • Новый артефакт расширения core-ktx для Kotlin! Включает в себя удобный для Kotlin API ActivityScenario.launchActivity.
    • Новый API ActivityScenario для запуска действий с помощью пользовательских интентов.
    • Новый API ActivityScenario для получения результатов выполнения действия.
    • Сделайте ActivityScenario закрываемым
  • Эспрессо
    • Внесите изменения в методы withResourceNameMatcher и HumanReadables для обеспечения совместимости с API 28.
    • Обновите описание ReplaceTextAction, добавив параметр stringToBeSet.
    • Поддержка Espresso в режиме паузы Robolectric для циклического воспроизведения.
  • JUnit
    • Новый API ActivityScenarioRule для автоматического запуска и закрытия Activity при настройке и завершении теста.
    • Новый артефакт расширения junit-ktx для Kotlin! Включает в себя API ActivityScenarioRule, совместимый с Kotlin.
  • Бегун
    • Обеспечьте единообразное поведение параметров -e package и -e testFile при получении пакетов.
  • Правда
    • Добавить API BundleSubject типа bool, parcelable и parcelableAsType

AndroidX Test Espresso 3.1.0, Runner 1.1.0, Rules 1.1.0, Monitor 1.1.0 AndroidTestOrchestrator 1.1.0, Core 1.0.0 Truth 1.0.0, JUnit 1.0.0 (2018-10-24)

  • Все
    • Установите minSdkVersion равным 14, а targetSdkVersion — 28.
  • Эспрессо
    • Исправьте метод withContentDescription для работы с нестроковыми типами данных.
    • Добавлена ​​поддержка использования Espresso на Robolectric.
    • Проблема 72798625 : Метод Espresso ViewMatchers.withText не работает, когда включен параметр textAllCaps.
    • Добавлена ​​поддержка внедрения последовательности событий движения.
  • Намерения
    • Добавлен бета-API для получения списка интентов. Предназначен для использования с новыми утверждениями истинности.
  • Бегун
    • Добавить поддержку мгновенных приложений
    • Объявить androidx.test.runner.AndroidJUnit4 устаревшим и заменить его на androidx.test.ext.junit.runners.AndroidJUnit4
  • Монитор
    • Объявить androidx.test.InstrumentationRegistry устаревшим и заменить его на androidx.test.platform.app.InstrumentationRegistry и androidx.test.core.app.ApplicationProvider.
  • AndroidTestOrchestrator
    • Включайте обработку покрытия кода оркестратором только в том случае, если переданы аргументы 'coverage' и 'coverageFilePath'.
    • Ожидание запуска отладчика происходит только при установке параметра -debug, но не при выводе списка тестовых случаев ATO. Добавлен новый флаг orchestratorDebug для отладки самого оркестратора.
  • Основной
    • Новый артефакт! Включает новые API, поддерживающие как локальные, так и внутриустройственные тесты для:
      • Получение контекста: ApplicationProvider
      • Управление жизненным циклом действий: ActivityScenario(beta)
      • Конструкторы для MotionEvent, PackageInfo
      • класс вспомогательных средств Parceables
  • Правда
    • Новый артефакт! Включает в себя пользовательские объекты истинности для уведомлений, намерений, пакетов, посылок и событий движения.
  • JUnit
    • Новый артефакт! Включает класс запуска JUnit androidx.test.ext.junit.runners.AndroidJUnit4, поддерживающий как локальные, так и тесты на устройстве.

Espresso 3.0.2-beta1, Runner 1.0.2-beta1, Rules 1.0.2-beta1, Monitor 1.0.2-beta1, AndroidTestOrchestrator 1.0.2-beta1 (2018-04-16)

  • Эспрессо
    • Изменение API, нарушающее обратную совместимость:
      • В рамках задачи 64062890 нам стало известно, что мы использовали класс Guava Optional в нашем публичном API. Это была ужасная ошибка с нашей стороны. В результате в этом релизе внесены критические изменения в публичный API для решения этой проблемы. Мы ввели некрасивую обертку вокруг класса Guava Optional, названную EspressoOptional, которая находится в пространстве имен "android.support.test.espresso.util". Разработчикам, которые использовали утекший API Guava Optional, необходимо изменить свои импорты и ссылки, чтобы использовать EspressoOptional при обновлении до этой новой версии. Приносим извинения за возможные неудобства.
    • Теперь API-функции onView() и onData() помечены аннотацией @CheckReturnValue для предотвращения ошибок.
    • Исправлена ​​ошибка в POM-файле espresso-core: теперь зависимость "rules" не подтягивается, а подтягивается из POM-файла espresso-intents. Для разработчиков это изменение не должно иметь значения, поскольку espresso-intents нельзя использовать без espresso-core.
    • Проблема 65486414 : В Espresso отсутствует зависимость guava.
    • Проблема 65576174 : Espresso IdlingResourceRegistry.sync приводит к сбою второго теста.
    • Проблема 65568629 : Espresso.onIdle не использует IdlingRegistry
    • Проблема 69333598 : Espresso 3.0.1 несовместим с play-services-auth:11.6.0 в модуле библиотеки Android.
    • Проблема 64062890 : Внутренний тип Optional, предоставляемый интерфейсом AdapterViewProtocol.
    • Проблема 64091847 : Espresso 3.0.0 НЕ должен зависеть от средства запуска тестов.
    • Проблема 73722050 : пакеты espresso-contrib 3.0.2-alpha1 android.arch.{lifecycle/core} classes
  • Эспрессо-дистанционный
    • Это совершенно новый артефакт. Мы отделили всю многопроцессную функциональность Espresso от артефакта espresso-core. Это более чистое решение, которое должно значительно уменьшить общий размер и количество методов в espresso-core.
  • Бегун
    • Если трассировка стека слишком велика для транзакции Binder, её следует усечь. Поскольку AJUR необходимо сообщать о сбоях обратно в AM через межпроцессное взаимодействие Binder, нам нужно убедиться, что мы не превышаем лимит транзакций Binder, который составляет 1 МБ на процесс.
    • Проблема 65828576 : TestRequestBuilder аварийно завершает работу при запуске теста в классе с аннотацией @Ignore.
    • Проблема 37057596 : Мы не обрабатываем ошибки в @BeforeClass
  • Правила
    • После изменения жизненного цикла обязательно освобождайте ссылку на тестируемую активность. В течение всего теста теперь можно напрямую управлять активностью, используя ссылку, полученную из #getActivity(). Если активность завершена и перезапущена, ссылка, возвращаемая #getActivity(), теперь всегда будет указывать на текущий экземпляр активности.
    • Проблема 64389280 : GrantPermissionRule не предоставляет WRITE_EXTERNAL_STORAGE
    • Проблема 37065965 : ActivityTestRule передает данные об активности после изменения ориентации экрана.
    • Проблема 75254050 : ActivityTestRule не обновляет экземпляр Activity при изменении конфигурации.
    • Проблема 64464625 : Невозможно выполнить действия в пользовательском интерфейсе в методе finish() класса Activity.
  • AndroidTestOrchestrator
    • Передайте флаги -e coverage true -e coverageFilePath /sdcard/foo/ для генерации файлов покрытия кода в указанном месте (приложение должно иметь разрешение на запись в указанное место). Теперь соглашение об именовании файлов покрытия кода выглядит следующим образом: com.foo.Class#method1.ec . Обратите внимание, что это поддерживается только при работе в изолированном режиме. Также это нельзя использовать вместе с флагом coverageFile объекта AndroidJUnitRunner, поскольку сгенерированные файлы покрытия кода перезаписывают друг друга.
    • Передайте флаг -e clearPackageData если хотите, чтобы оркестратор выполнял команды pm clear context.getPackageName() и pm clear targetContext.getPackageName() между запусками тестов. Обратите внимание, что контекст в команде clear — это контекст тестируемого приложения.
    • Исправлено - При запуске пустого теста, то есть без аннотации @Test внутри целевого объекта, результат теста отличается от режима совместимости.
    • Проблема 72758547 : Test Orchestrator приводит к неполноте данных покрытия кода Jacoco, отображая только данные о последнем запуске теста.
    • Проблема 67916042 : Android Test Orchestrator: Выполнение остановлено из-за сбоя процесса вследствие нехватки памяти.
    • Проблема 77752735 : Orchestrator аварийно завершает работу из-за ошибки TransactionTooLargeException.
    • Проблема 77549481 : После каждого теста в Test Orchestrator следует запускать команду "pm clear".

Espresso 3.0.2-alpha1, Runner 1.0.2-alpha1, Rules 1.0.2-alpha1, AndroidTestOrchestrator 1.0.2-alpha1 (2017-12-05)

  • Эспрессо

    • Теперь Intents имеет вызываемый ответ, что позволяет выполнять тесты после перехвата сработавшего Intent, но до возврата объекта Instrumentation.ActivityResult .
  • Бегун

    • Выделите артефакт Maven для мониторинга com.android.support.test:monitor:<version> для пользователей, которым требуется MonitoringInstrumentation без запуска тестов и функций JUnit.

      Если вы используете com.android.support.test:runner:<version> , всё работает как положено, потому что Gradle автоматически подключает модуль monitor в качестве зависимости модуля runner .

    • Добавлен флаг newRunListenerOrderMode . Если он true , пользовательские обработчики событий будут выполняться раньше обработчиков по умолчанию. (Мы ожидаем, что в конечном итоге это поведение станет поведением по умолчанию.)

    • Проблема 65828576 : TestRequestBuilder аварийно завершает работу при запуске тестов в классе, аннотированном @Ignore (в автономном режиме без запуска тестов или функций JUnit).

  • AndroidTestOrchestrator

    • Теперь обрабатывает пустые тесты так же, как и неоркестрированный AndroidJUnitRunner .
    • Теперь Orchestrator может обрабатывать очень большие стандартные выходные данные из AndroidJUnitRunner .

Espresso 3.0.1, Runner 1.0.1, Rules 1.0.1, AndroidTestOrchestrator 1.0.1 (2017-08-28)

  • Эспрессо

    • Добавлена ​​опция IdlingPolicy для подавления onTimeout() при подключении пошагового отладчика к виртуальной машине.
    • Проблемы 64024656 , 64247586 и 64525881 : Не сообщать о сбоях при неудачной загрузке классов, если пользователь не загружает конкретные классы, используя аргумент запуска классов -e .
    • Проблема 64877246 : Добавить недостающие классы в исходный JAR-файл.
  • Бегун

    • Упрощенная логика ShardingFilter .
    • Проблема 65025743 : Фильтр @RequiresDevice теперь поддерживает эмуляторы FTL.
  • AndroidTestOrchestrator

    • Не дублируйте отчеты о сбоях. Если тестовый процесс завершается с ошибкой, теперь сообщается только об одном сбое для всего теста.
    • Исправлена ​​документация Javadoc для Orchestrator.
    • Теперь тесты помечаются как пропущенные, если удаленный процесс завершается с ошибкой.
    • Теперь обрабатывается проигнорированный тестовый случай.
    • Теперь игнорируемые тестовые случаи исключаются из нижнего колонтитула, чтобы соответствовать результатам предыдущей версии.
    • Исправлены проблемы с правами доступа во время выполнения. Отчеты о тестировании теперь записываются на SD-карту в Android 7.0 (уровень API 24) и выше.

Espresso 3.0.0, Runner 1.0.0, Rules 1.0.0, AndroidTestOrchestrator 1.0.0 (25.07.2017, Анонс )

Изменения, нарушающие покой

  • Все артефакты
    • Поддержка API-уровней ниже 15 прекращена, однако минимальный SDK по-прежнему указывает на API-уровень 9, чтобы дать пользователям время на обновление.
  • Эспрессо
    • Устаревший класс android.support.test.espresso.contrib.CountingIdlingResource был удален и перемещен в android.support.test.espresso.idling.CountingIdlingResource
    • Теперь Guava перемещена в другое «внутреннее» пространство имен (jarjar) — если вы случайно используете API Guava через пространства имен Espresso, вы можете столкнуться с проблемами.
      • Удалите все ссылки на затененную Guava ( .core.deps.guava. )
      • Обновите версию вашей библиотеки поддержки до 25.4.0 или выше.

Известные проблемы

  • AndroidTestOrchestrator
    • Аргументы запуска -e numShards и -e shardIndex в настоящее время не поддерживаются.
    • Параметризованные тесты в настоящее время не поддерживаются.

Новые функции

  • Эспрессо
    • Новая поддержка многопроцессной обработки Espresso на API 26 для espresso-core и espresso-web , но не для espresso-contrib
    • Новый облегченный API IdlingRegistry
    • Новый API для синхронизации с Executors
    • Новый API для синхронизации сетевых запросов и ответов.
      • Новый артефакт Maven: com.android.support.test.espresso.idling:idling-net:3.0.0
      • Содержит класс UriIdlingResource
    • Новые алгоритмы сопоставления изображений в espresso-core :
      • hasBackground() сравнивает данные с фоновым ресурсом изображения объекта View
      • hasTextColor() сравнивает цвет объекта TextView с цветом, заданным этим объектом.
    • Новые методы обработки представлений:
      • Улучшена работа действия scrollTo() для представления, теперь оно работает с потомками ListView
      • repeatedlyUntil() – Выполняет заданное ViewAction над представлением до тех пор, пока представление не будет соответствовать желаемым ViewMatchers
    • Новые методы приготовления эспрессо:
      • pressBackUnconditionally() – Аналогично pressBack() , но не генерирует исключение при навигации в Espresso.
      • noActivity() – Устраняет необходимость ожидания завершения Activity перед выполнением ViewAction или ViewAssertion
      • onIdle() – Запускает цикл в основном потоке до тех пор, пока приложение не перейдет в режим ожидания.
      • onIdle(Callable<T>) – Аналогично onIdle() , но принимает в качестве параметра дополнительный Callable , который выполняется после перехода приложения в режим ожидания.
    • webScrollIntoView() – Новый компонент espresso-web , позволяющий прокручивать содержимое WebView
  • Бегун
    • InterceptingActivityFactory и SingleActivityFactory — предоставляют возможность тестирования активности в изоляции от внешнего мира путем переопределения таких методов, как startService() и sendBroadcast()
    • Добавлена ​​поддержка использования JUnitParams с AndroidJUnitRunner
    • Начните обрабатывать аннотацию @UiThreadTest на уровне основного средства запуска тестов и объявите устаревшей аннотацию @UiThreadTestRule — это позволит использовать аннотацию @UiThreadTest непосредственно для методов, аннотированных @Before и @After
    • Аннотация @SdkSupress теперь поддерживает значение maxSdkVersion (Issue 37067792 )
    • -e classLoader – Предоставляет возможность передавать загрузчики классов с помощью аргументов runner.
    • -e filter – Добавлена ​​поддержка пользовательских фильтров JUnit, указываемых с помощью аргументов runner.
    • -e runnerBuilder – Позволяет разработчикам предоставлять собственные реализации RunnerBuilder , которые могут определять, можно ли и как запускать программу для конкретного класса.
  • Правила
  • AndroidTestOrchestrator
    • Android Test Orchestrator предоставляет новый способ сбора и запуска тестов с акцентом на корректность и изоляцию. Orchestrator — это независимый процесс инструментирования, запускающий отдельный процесс выполнения тестов для каждого теста и собирающий результаты.
      • Сбои в работе приложения приводят к отключению инструментария запуска тестов, но не оркестратора, что позволяет продолжить выполнение набора тестов.
      • Требуется установка APK-файла оркестратора – 'com.android.support.test:orchestrator:1.0.0'
      • Версия 1.0 имеет только интерфейс командной строки; планируется интеграция с Android Studio и Firebase Test Labs.

Исправлены ошибки

  • Эспрессо
    • Улучшена синхронизация корневых представлений для значительного уменьшения нестабильности.
    • Исправлена ​​ошибка в реестре IdlingResourceRegistry
    • Улучшена синхронизация с объектами IdlingResource
    • Проблема 37132680 : Espresso не дожидается завершения создания диалога перед выполнением следующего действия.
    • Проблема 37103280 : Espresso следует включить в комплект поставки правила ProGuard для пользователей, чтобы им не приходилось добавлять их самостоятельно.
    • Проблема 37094726 : Espresso Intents содержит ненужную метку приложения.
    • Проблема 37093953 : Espresso: Отсутствует проверка на наличие пустого/нулевого текста ошибки.
    • Проблема 37071776 : espresso-core встраивает файлы .pom из Guava.
    • Проблема 37062612 : NPE в release()
    • Проблема 37063389 : Наличие Guava и espresso-web в качестве зависимостей androidTest не компилируется.
    • Проблема 37070533 : Добавить поддержку NavigationView в библиотеку поддержки дизайна Android.
  • Бегун
    • Исправлена ​​возможность использования аннотации @UiThreadTest в сочетании с @Test(timeout = 123)
    • Исправлен аргумент -e notClass runner
    • Исправлена ​​ошибка -e log для поддержки тестовых наборов JUnit3 и JUnit4, а также Parameterized и Enclosed средств запуска тестов.
    • Проблема 37663530 : Дождитесь завершения всех действий до и после каждого метода тестирования.
    • Проблема 37132680 : Espresso не дожидается завершения создания диалога перед выполнением следующего действия.
    • Проблема 37123213 : аннотация @RequiresDevice игнорируется в ABI x86_64
    • Проблема 37101485 : Некоторые аргументы, предоставляемые манифестом для AndroidJUnitRunner , — такие как размер теста, аннотация и отладочная информация — игнорируются.
    • Проблема 37082857 : Полупараллельное выполнение тестов Espresso завершается с ошибкой для статических объектов.
    • Проблема 37063396 : Контекст не инициализирован с помощью ProviderTestCase2 (вызывает NullPointerException )
  • Правила
    • Исправлен жизненный цикл ActivityTestRule для унификации поведения при обычной и отложенной инициализации ActivityTestRule
    • Проблема 37079943 : Исправлена ​​ошибка ServiceTestRule , позволяющая повторно привязывать переменные.
    • Проблема 37109342 : Добавить getActivityResult() и ActivityResultMatchers
  • UiAutomator
    • setUiAutomationFlags() используется с UiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES – это позволяет использовать UiAutomator во время работы других служб обеспечения доступности.
    • Проблема 37082813 : setText() для пустых объектов EditText вызывает исключение NullPointerException если уровень API равен 19 или ниже.

Другие важные изменения

  • Теперь бинарные файлы публикуются через Google Maven.
  • Уменьшен размер JAR-файлов espresso-core и espresso-web — для встроенных зависимостей теперь применяется ProGuard.
  • Теперь все файлы .aar содержат правила ProGuard.
  • Добавьте файлы proguard_library.cfg в выпущенные артефакты.
  • В интерфейсе Tapper появилась новая версия функции sendTap() предназначенная для реализации новых функций.

Внешние вклады

Espresso 2.2.2, Runner/Rules 0.5 (22.02.2016, релиз в закрытом режиме)

Новые функции

  • эспрессо
    • Проблема 194253 : Добавить поддержку NavigationView в библиотеку поддержки дизайна Android.
    • Добавлены проверки на наличие включенных анимаций и переходов.
    • Новый API ViewMatcher : withResourceName()

Исправлены ошибки

  • эспрессо
    • Проблема 195331 : espresso-core встраивает pom-файлы Guava.
    • Учет простаивающих ресурсов перенесен из espresso-contrib.
  • правила
    • Проблема 187249 : NPE в Intents.release()
  • бегун
    • Проблема 196066: Аргумент -e log true в AndroidJUnitRunner не обходит фактическую проверку.
    • Ожидание запуска отладчика в onCreate() объекта runner
    • Все поддерживаемые тестовые аннотации перенесены из платформы в ATSL.
    • Удалён дамп трассировки стека, указывающий на отсутствие JSBridge.
    • Исправлен AndroidAnnotatedBuilder

Другие важные изменения

  • ActivityTestRule , UiThreadTestRule , IntentsTestRule и ServiceTestRule вышли из бета-версии.
  • Добавьте файл настроек стиля кода для единообразного форматирования кода.

Espresso 2.2.1, Runner/Rules 0.4 (2015-09-15)

Новые функции

  • правила
    • Добавлен новый конструктор IntentsTestRule для полной совместимости с ActivityTestRule
  • бегун
    • Добавлена ​​специальная настройка установки Multidex для уровней API 15 и ниже.
    • Добавлены фильтры исключения в класс и пакет:
      • Выполнение всех тестов, кроме тестов определенного класса: adb shell am instrument -w -e notClass com.android.foo.FooTest
      • Выполнены все тесты, кроме одного: adb shell am instrument -w -e notClass com.android.foo.FooTest#testFoo
      • Выполнены все тесты, кроме одного пакета: adb shell am instrument -w -e notPackage com.android.foo.bar

Внешние вклады

  • эспрессо
    • 157911 : Добавить сопоставитель представления для типа ввода в объекте EditText
    • 157912 : Добавить средство сопоставления представлений для поиска текста ошибки в объекте EditText
    • 150674 : Добавлена ​​поддержка DrawerActions для выдвижных панелей с произвольной силой тяжести.
    • 150744 : DrawerActions больше не допускают утечку parentListener
    • 153303 : Гравитация указана в проверках "открыт или закрыт ящик"
    • 157910 : Добавить фабрики действий открытия и закрытия DrawerLayout

Исправлены ошибки

  • эспрессо
    • Теперь ViewActions.closeSoftKeyboard() гарантирует полное исчезновение экранной клавиатуры.
    • Исправлена ​​проблема синхронизации с методом Espresso.pressBack() в Espresso на уровне API 21 и выше.
    • Исправлена ​​синхронизация анимации закрытия клавиатуры на уровне API 23.
  • правила
    • Исправлено правило ServiceTestRule на уровне API 23: startService() всегда должен вызываться с явным Intent
  • бегун
    • Исправлена ​​неработающая поддержка Gradle JaCoCo
    • Исправлена ​​неработающая поддержка сегментирования тестов.
    • Исправлено несогласованное состояние в средстве запуска тестов после истечения времени ожидания тестов в стиле JUnit3

Другие важные изменения

  • Исправлены ошибки в документации Javadoc и улучшены сообщения об ошибках.
  • При использовании фильтров методов игнорируйте методы suite() и не игнорируйте ошибки инициализации.

Espresso 2.2 / ATSL 0.3 (09.06.2015)

Новые функции

  • espresso-web 2.2
    • Новая поддержка WebView
  • espresso-core 2.2
    • Перешли на использование Dagger v2.
    • Перешли на использование hamcrest v1.3
  • espresso-contrib 2.2
    • Проверки доступности
    • Поддержка гравитации DrawerActions
  • правила 0.3
    • Правило DisableOnAndroidDebug
  • бегун 0.3
    • Обновление с JUnit v4.10 до JUnit v4.12
    • Перешёл на использование Hamcrest версии 1.3.

Исправлены ошибки

  • Исправлена ​​ошибка утечки ParentListener DrawerActions
  • Теперь нарушение предположения рассматривается как проверка на игнорирование, а не как неудовлетворительная проверка.
  • Исправлена ​​ошибка, из-за которой MonitoringInstrumentation допускал утечку экземпляров активности через ExecutorService
  • Исправлена ​​ошибка, из-за которой "осиротевшие" действия застревали на этапе остановки.
  • Обновите метод Until.scrollFinished() , чтобы он возвращал true, если события прокрутки не были сгенерированы. Предотвратите потенциальное возникновение NullPointerException в UiObject2#setText() .

Espresso 2.1, Test Runner/Rules 0.2 и UIAutomator 2.1.0 (21.04.2015)

Изменения, нарушающие покой

  • Артефакт средства запуска тестов был разделён на две части, и его название изменилось с com.android.support.test:testing-support-lib:0.1 на com.android.support.test:runner:0.2 и com.android.support.test:rules:0.2 .

Новые функции

  • espresso-intents : API, подобный Mockito, который обеспечивает герметичное тестирование взаимодействия, позволяя авторам тестов проверять и имитировать исходящие интенты.
    • IntentsTestRule : наследует ActivityTestRule , инициализирует и освобождает Espresso-Intents в функциональных тестах пользовательского интерфейса.
  • эспрессо-ядро
    • ViewActions : Добавлена ​​возможность выполнения глобальных проверок перед выполнением действий. Это полезно для других фреймворков, построенных на основе Espresso, для проверки состояния иерархии представлений во время выполнения существующего набора тестов Espresso.
    • ViewMatchers.withContentDescription() перегрузка resId
  • правила
    • ActivityTestRule : Это правило обеспечивает функциональное тестирование отдельного действия.
    • Аннотации UiThreadRule и UiThreadTest : это правило позволяет тестовому методу, аннотированному UiThreadTest , выполняться в основном потоке приложения (или потоке пользовательского интерфейса).
    • ServiceTestRule : Это правило обеспечивает функциональное тестирование сервиса.
  • бегун
    • ApplicationLifecycleCallback : Функция обратного вызова для мониторинга событий жизненного цикла приложения.
    • Теперь все аргументы запуска можно также указать в файле манифеста Android с помощью тега <meta-data>
  • UIAutomator
    • UiDevice.dumpWindowHierarchy() теперь может принимать значения File или OutputStream

Исправлены ошибки

  • эспрессо
    • Теперь средство сопоставления курсоров возвращает false если столбец не найден, чтобы Hamcrest мог перейти к следующему курсору.
    • NullPointerException при использовании PreferenceMatchers withTitle больше не возникает.
    • Отмена регистрации простаивающих ресурсов больше не приводит к тому, что Espresso считает, что у нас есть занятые простаивающие ресурсы.
    • Обновлена ​​версия аннотаций поддержки, используемая в Espresso Contrib.
  • бегун
    • AndroidJUnit4 теперь пропускаются тесты с неверными предположениями.
  • UIAutomator
    • Запустите наблюдатели для предотвращения StaleObjectException

Другие важные изменения

  • Добавить более информативное сообщение об ошибке, если не удаётся ввести текст, содержащий нелатинские символы.

UIAutomator 2.0 (12.03.2015)

Теперь UI Automator основан на Android Instrumentation, и вы можете создавать и запускать тесты с помощью команды ./gradlew connectedCheck .

Espresso Версия 2.0, Test Runner 0.1 (Выпущено: 19.12.2014)

Изменения, нарушающие покой

  • Espresso перешёл в новое пространство имён: с android.support.test.espresso на android.support.test.espresso
  • Артефакты, связанные с эспрессо, были переименованы.
    • espresso-1.1.jar теперь называется espresso-core-release-2.0.jar
    • Интерфейс IdlingResource вынесен в отдельную библиотеку: espresso-idling-resource-release-2.0.jar
    • CountingIdlingResource теперь находится в файле espresso-contrib-release-2.0.jar (как и должно было быть всегда).
  • Метод Optional (зависимость от Guava) был удален из публичного API для поддержки переупаковки зависимости Guava и во избежание конфликтов с DEX (основной источник проблем при разработке). К затронутым методам относятся следующие:
    • ViewAssertion.check()
    • HumanReadables.getViewHierarchyErrorMessage()

Новые функции

  • Действия
    • ViewActions
      • replaceText()
      • openLink()
      • Проведите пальцем вверх и вниз
    • espresso-contrib
      • RecyclerViewActions : Обрабатывает взаимодействие с RecyclerViews
      • PickerActions : Обрабатывает взаимодействие с элементами выбора Date и Time
  • Совпадающие
    • RootMatchers
      • isPlatformPopup()
    • ViewMatchers
      • isJavascriptEnabled()
      • withSpinnerText()
      • withHint()
      • isSelected()
      • hasLinks()
    • LayoutMatchers : средства сопоставления для тестирования компоновки, связанной с интернационализацией.
    • CursorMatchers : Набор сопоставителей для объектов Cursor
  • Утверждения
    • PositionAssertions , включая isLeftOf() и isAbove() : коллекция ViewAssertions для проверки относительного положения элементов на экране.
    • LayoutAssertions : Утверждения для тестирования компоновки, связанной с интернационализацией.
  • Приложение для тестирования: множество новых примеров заданий/тестов.
  • Другой
    • Espresso.unregisterIdlingResources() и Espresso.getIdlingResources() : обеспечивают дополнительную гибкость при работе с IdlingResources
    • ViewInteraction.withFailureHandler() : Позволяет переопределить обработчик ошибок из onView()
    • Поддержка onData() для AdapterViews , использующих CursorAdapters

Исправлены ошибки

  • ViewMatchers.isDisplayed() находит элементы, которые занимают весь экран, но отображаются не менее чем на 90%.
  • Выполнение вызова метода DrawerActions.openDrawer() для обработки жестов больше не приводит к ошибке IdlingResourceTimeoutException

Другие важные изменения

  • Перешёл с сборки проектов с помощью Maven на Gradle.
  • Переместил зависимости Espresso (Guava, Dagger, Hamcrest) в другое место, чтобы избежать конфликтов DEX.
  • Изменено: теперь при регистрации и отмене регистрации простаивающих ресурсов возвращается результат успеха или неудачи.
  • Поддержка Lollipop: разместите message.recycle() за интерфейсом для учета изменений, связанных с версией.
  • Уровень целевого SDK изменен на 21 — это в основном влияет на тестовое приложение.

Версия 1.1 (Выпущена: 08.01.2014)

Эспрессо

  • Новые ViewActions swipeLeft и swipeRight
  • Поддержка нескольких окон: расширенная функция, позволяющая выбрать целевое окно, в котором Espresso должен выполнять операцию.
  • Улучшения в TypeTextAction : позволяет вводить текст в предварительно сфокусированное окно, что упрощает добавление текста.
  • Исправлено множество ошибок

Библиотека Espresso Conrib

  • Эта новая библиотека содержит функции, дополняющие Espresso, но не входящие в основную библиотеку.
  • Новые DrawerActions для работы с DrawerLayout : зависят от библиотеки поддержки Android, поэтому мы не включаем их в основную библиотеку Espresso.

Примеры тестов

  • Эти тесты были перенесены в тот же пакет, что и тестовое приложение.
  • В файлах POM Maven исправлены дублирующиеся зависимости Guava, поэтому mvn install теперь должна работать.