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
- Новый артефакт! Включает новые API, поддерживающие как локальные, так и внутриустройственные тесты для:
- Правда
- Новый артефакт! Включает в себя пользовательские объекты истинности для уведомлений, намерений, пакетов, посылок и событий движения.
- 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
- Изменение API, нарушающее обратную совместимость:
- Эспрессо-дистанционный
- Это совершенно новый артефакт. Мы отделили всю многопроцессную функциональность 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- Используйте
getInstance().register()вместоregisterIdlingResources()
- Используйте
- Теперь Guava перемещена в другое «внутреннее» пространство имен (jarjar) — если вы случайно используете API Guava через пространства имен Espresso, вы можете столкнуться с проблемами.
- Удалите все ссылки на затененную Guava (
.core.deps.guava.) - Обновите версию вашей библиотеки поддержки до 25.4.0 или выше.
- Удалите все ссылки на затененную Guava (
- Устаревший класс
Известные проблемы
- AndroidTestOrchestrator
- Аргументы запуска
-e numShardsи-e shardIndexв настоящее время не поддерживаются. - Параметризованные тесты в настоящее время не поддерживаются.
- Аргументы запуска
Новые функции
- Эспрессо
- Новая поддержка многопроцессной обработки Espresso на API 26 для
espresso-coreиespresso-web, но не дляespresso-contrib - Новый облегченный API
IdlingRegistry- Опубликовано в рамках
com.android.support.test.espresso:espresso-idling-resource:3.0.0 - Устаревшие методы:
- Опубликовано в рамках
- Новый API для синхронизации с
Executors- Новый артефакт Maven:
com.android.support.test.espresso.idling:idling-concurrent:3.0.0 - Содержит классы
IdlingScheduledThreadPoolExecutorиIdlingThreadPoolExecutor
- Новый артефакт Maven:
- Новый API для синхронизации сетевых запросов и ответов.
- Новый артефакт Maven:
com.android.support.test.espresso.idling:idling-net:3.0.0 - Содержит класс
UriIdlingResource
- Новый артефакт Maven:
- Новые алгоритмы сопоставления изображений в
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
- Новая поддержка многопроцессной обработки Espresso на API 26 для
- Бегун
-
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, которые могут определять, можно ли и как запускать программу для конкретного класса.
-
- Правила
-
ProviderTestRule– Новый API для тестирования объектовContentProvider -
getActivityResult()иActivityResultMatchers– новый API для получения результата выполнения действия, для которого был вызванsetResult()
-
- AndroidTestOrchestrator
- Android Test Orchestrator предоставляет новый способ сбора и запуска тестов с акцентом на корректность и изоляцию. Orchestrator — это независимый процесс инструментирования, запускающий отдельный процесс выполнения тестов для каждого теста и собирающий результаты.
- Сбои в работе приложения приводят к отключению инструментария запуска тестов, но не оркестратора, что позволяет продолжить выполнение набора тестов.
- Требуется установка APK-файла оркестратора –
'com.android.support.test:orchestrator:1.0.0' - Версия 1.0 имеет только интерфейс командной строки; планируется интеграция с Android Studio и Firebase Test Labs.
- Android Test Orchestrator предоставляет новый способ сбора и запуска тестов с акцентом на корректность и изоляцию. Orchestrator — это независимый процесс инструментирования, запускающий отдельный процесс выполнения тестов для каждого теста и собирающий результаты.
Исправлены ошибки
- Эспрессо
- Улучшена синхронизация корневых представлений для значительного уменьшения нестабильности.
- Исправлена ошибка в реестре
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 notClassrunner - Исправлена ошибка
-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()
- Проблема 187249 : NPE в
- бегун
- Проблема 196066: Аргумент
-e log trueвAndroidJUnitRunnerне обходит фактическую проверку. - Ожидание запуска отладчика в
onCreate()объекта runner - Все поддерживаемые тестовые аннотации перенесены из платформы в ATSL.
- Удалён дамп трассировки стека, указывающий на отсутствие JSBridge.
- Исправлен
AndroidAnnotatedBuilder
- Проблема 196066: Аргумент
Другие важные изменения
-
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
- 157911 : Добавить сопоставитель представления для типа ввода в объекте
Исправлены ошибки
- эспрессо
- Теперь
ViewActions.closeSoftKeyboard()гарантирует полное исчезновение экранной клавиатуры. - Исправлена проблема синхронизации с методом
Espresso.pressBack()в Espresso на уровне API 21 и выше. - Исправлена синхронизация анимации закрытия клавиатуры на уровне API 23.
- Теперь
- правила
- Исправлено правило
ServiceTestRuleна уровне API 23:startService()всегда должен вызываться с явнымIntent
- Исправлено правило
- бегун
- Исправлена неработающая поддержка Gradle
JaCoCo - Исправлена неработающая поддержка сегментирования тестов.
- Исправлено несогласованное состояние в средстве запуска тестов после истечения времени ожидания тестов в стиле
JUnit3
- Исправлена неработающая поддержка Gradle
Другие важные изменения
- Исправлены ошибки в документации 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.
Исправлены ошибки
- Исправлена ошибка утечки
ParentListenerDrawerActions - Теперь нарушение предположения рассматривается как проверка на игнорирование, а не как неудовлетворительная проверка.
- Исправлена ошибка, из-за которой
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при использованииPreferenceMatcherswithTitleбольше не возникает. - Отмена регистрации простаивающих ресурсов больше не приводит к тому, что 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)
Эспрессо
- Новые
ViewActionsswipeLeftиswipeRight - Поддержка нескольких окон: расширенная функция, позволяющая выбрать целевое окно, в котором Espresso должен выполнять операцию.
- Улучшения в
TypeTextAction: позволяет вводить текст в предварительно сфокусированное окно, что упрощает добавление текста. - Исправлено множество ошибок
Библиотека Espresso Conrib
- Эта новая библиотека содержит функции, дополняющие Espresso, но не входящие в основную библиотеку.
- Новые
DrawerActionsдля работы сDrawerLayout: зависят от библиотеки поддержки Android, поэтому мы не включаем их в основную библиотеку Espresso.
Примеры тестов
- Эти тесты были перенесены в тот же пакет, что и тестовое приложение.
- В файлах POM Maven исправлены дублирующиеся зависимости Guava, поэтому
mvn installтеперь должна работать.