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 (13 декабря 2018 г.)
Это стабильная версия 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 (06.12.2018)
- Основной
- Новый артефакт расширения Kotlin core-ktx! Включает удобный для Kotlin API ActivityScenario.launchActivity.
- Новый API ActivityScenario для запуска действий с настраиваемыми намерениями.
- Новый API ActivityScenario для получения результата действия.
- Сделать ActivityScenario закрываемым
- Эспрессо
- Измените withResourceNameMatcher и HumanReadables, чтобы они были совместимы с API 28.
- Обновите описание replaceTextAction, включив в него stringToBeSet.
- Поддержка эспрессо в режиме паузы лупера Robolectric.
- Юнит
- Новый API ActivityScenarioRule для автоматического запуска и закрытия действия при тестовой настройке и удалении.
- Новый артефакт расширения Kotlin junit-ktx! Включает API ActivityScenarioRule, совместимый с Kotlin.
- бегун
- Сделать -e package и -e testFile согласованными в поведении при получении пакетов.
- Правда
- Добавление API-интерфейсов bool, посылки и посылкиAsType BundleSubject.
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 (24 октября 2018 г.)
- Все
- Установите 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
- Включайте обработку покрытия оркестратора только в том случае, если переданы оба аргумента «покрытие» и «coverageFilePath».
- Ожидайте отладчика только тогда, когда установлен параметр -debug, но не для вывода списка тестовых случаев ATO. Был добавлен новый флаг оркестратораDebug для отладки самого оркестратора.
- Основной
- Новый артефакт! Включает новые API, которые поддерживают как локальные тесты, так и тесты на устройстве для:
- Получение контекста: ApplicationProvider
- Управление жизненными циклами действий: ActivityScenario(beta)
- Разработчики для MotionEvent, PackageInfo
- Утилита Parceables
- Новый артефакт! Включает новые API, которые поддерживают как локальные тесты, так и тесты на устройстве для:
- Правда
- Новый артефакт! Включает пользовательские темы правды для Notification, Intent, Bundle, Parcelable и MotionEvent.
- Юнит
- Новый артефакт! Включает класс запуска 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 (16 апреля 2018 г.)
- Эспрессо
- Критическое изменение API:
- В выпуске 64062890 наше внимание было обращено на то, что мы использовали Guava необязательно в нашем общедоступном API. Это было ужасное упущение с нашей стороны. В результате в этом выпуске есть критическое изменение общедоступного API для решения этой проблемы. Мы представили уродливую оболочку вокруг дополнительного класса Guava под названием EspressoOptional, которая находится в пространстве имен «android.support.test.espresso.util». Разработчикам, которые использовали просочившийся дополнительный API Guava, необходимо изменить импорт и ссылки, чтобы использовать EspressoOptional во время обновления до этой новой версии. Приносим извинения за возможные неудобства.
- API-интерфейсы onView() и onData() теперь помечены @CheckReturnValue для предотвращения ошибок.
- Исправлен POM-файл ядра эспрессо, который не извлекал зависимость «правил», вместо этого POM-намерения эспрессо извлекали его. Это должно стать изменением NoOp для разработчиков, поскольку эспрессо-намерения нельзя использовать без эспрессо-ядра.
- Проблема 65486414 : в эспрессо отсутствует зависимость от гуавы.
- Проблема 65576174 : Espresso IdlingResourceRegistry.sync вызывает сбой второго теста.
- Проблема 65568629 : Espresso.onIdle не использует IdlingRegistry.
- Проблема 69333598 : эспрессо 3.0.1 несовместим с play-services-auth:11.6.0 в модуле библиотеки Android.
- Проблема 64062890 : Внутренний дополнительный тип, предоставляемый интерфейсом AdaptorViewProtocol.
- Проблема 64091847 : Espresso 3.0.0 НЕ должна зависеть от средства запуска тестов.
- Проблема 73722050 : пакеты espresso-contrib 3.0.2-alpha1 и классы android.arch.{lifecycle/core}
- Критическое изменение API:
- Эспрессо-пульт
- Это совершенно новый артефакт. Мы отделили всю многопроцессную функциональность Espresso от артефакта ядра эспрессо. Это чище и должно значительно уменьшить общий размер espresso-core и количество методов.
- бегун
- Усекать трассировку стека, если он слишком велик для транзакции связывания. Поскольку AJUR необходимо сообщать об ошибках обратно в AM через IPC связывателя, нам необходимо убедиться, что мы не превышаем лимит транзакций Binder, который составляет 1 МБ на процесс.
- Проблема 65828576 : сбой TestRequestBuilder при запуске теста в классе с @Ignore.
- Проблема 37057596 : мы не обрабатываем сбои в @BeforeClass.
- Правила
- Обязательно выпустите ссылку на тестируемую деятельность после изменений жизненного цикла. Во время теста теперь можно напрямую манипулировать действием, используя ссылку, полученную из #getActivity(). Если действие завершено и перезапущено, ссылка, возвращаемая #getActivity(), теперь всегда указывает на текущий экземпляр действия. .
- Проблема 64389280 : GrantPermissionRule не предоставляет WRITE_EXTERNAL_STORAGE.
- Проблема 37065965 : ActivityTestRule пропускает активность после изменения ориентации.
- Проблема 75254050 : ActivityTestRule не обновляет экземпляр Activity во время изменений конфигурации.
- Проблема 64464625 : Невозможно выполнить работу пользовательского интерфейса в методе Finish() действия.
- AndroidTestOrchestrator
- Передайте
-e coverage true -e coverageFilePath /sdcard/foo/
flags для создания файлов покрытия в заданном месте (приложение должно иметь разрешение на запись в указанное расположение). Соглашение об именовании файлов покрытия теперь выглядит следующим образом:com.foo.Class#method1.ec
. Обратите внимание: это поддерживается только при работе в изолированном режиме. Кроме того, его нельзя использовать вместе с флагомcoverageFile
AndroidJUnitRunner. Так как сгенерированные файлы покрытия перезаписывают друг друга. - Передайте флаг
-e clearPackageData
если вы хотите, чтобы оркестратор запускал командыpm clear context.getPackageName()
иpm clear targetContext.getPackageName()
между вызовами тестов. Обратите внимание, что контекстом команды очистки является контекст тестируемого приложения. - Исправлено — при запуске пустого теста, т.е. нет @Test внутри цели, результат теста отличается от устаревшего режима.
- Проблема 72758547 : оркестратор тестирования приводит к тому, что данные о покрытии Jacoco становятся неполными, имеются только данные последнего запуска теста.
- Проблема 67916042 : Оркестратор тестов Android: выполнение остановлено при сбое процесса из-за OutOfMemory
- Проблема 77752735 : Оркестратор аварийно завершает работу из-за исключения TransactionTooLargeException.
- Проблема 77549481 : Оркестратор тестирования должен запускать команду «pmclear» после каждого теста.
- Передайте
Espresso 3.0.2-alpha1, Runner 1.0.2-alpha1, Rules 1.0.2-alpha1, AndroidTestOrchestrator 1.0.2-alpha1 (05.12.2017)
Эспрессо
-
Intents
теперь имеет вызываемый ответ, что позволяет выполнять тесты после захвата запущенного намерения, но до возврата объекта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 (28 августа 2017 г.)
Эспрессо
- Добавлен параметр
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 июля 2017 г., Объявление )
Критические изменения
- Все артефакты
- Прекращение поддержки уровней API ниже 15, однако минимальный SDK по-прежнему указывает на уровень API 9, чтобы дать пользователям время для обновления.
- Эспрессо
- Устаревший класс
android.support.test.espresso.contrib.CountingIdlingResource
был удален и перемещен вandroid.support.test.espresso.idling.CountingIdlingResource
- Используйте
getInstance().register()
вместоregisterIdlingResources()
- Используйте
- Guava теперь перенесена в другое «внутреннее» пространство имен — если вы случайно используете API Guava через пространства имен Espresso, вы можете увидеть сбои.
- Удалите все ссылки на затененную гуаву (
.core.deps.guava.
). - Обновите версию библиотеки поддержки до 25.4.0 или выше.
- Удалите все ссылки на затененную гуаву (
- Устаревший класс
Известные проблемы
- AndroidTestOrchestrator
- Аргументы запуска
-e numShards
и-e shardIndex
в настоящее время не поддерживаются. - Параметризованные тесты в настоящее время не поддерживаются.
- Аргументы запуска
Новые возможности
- Эспрессо
- Новая поддержка Multiprocess 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()
но не выдает исключение при навигации по эспрессо. -
noActivity()
— устраняет необходимость ожидания действия перед выполнениемViewAction
илиViewAssertion
-
onIdle()
— зацикливает основной поток до тех пор, пока приложение не перейдет в режим ожидания. -
onIdle(Callable<T>)
— то же, чтоonIdle()
, но принимает дополнительныйCallable
в качестве параметра, который выполняется после того, как приложение переходит в режим ожидания.
-
-
webScrollIntoView()
– новый атомespresso-web
, который позволяет прокручивать внутриWebView
- Новая поддержка Multiprocess Espresso в API 26 для
- бегун
-
InterceptingActivityFactory
иSingleActivityFactory
— предоставляет возможность тестирования активности изолированно от внешнего мира путем переопределения таких методов, какstartService()
иsendBroadcast()
- Добавить поддержку использования JUnitParams с
AndroidJUnitRunner
- Начать обработку
@UiThreadTest
на уровне основного средства запуска тестов и прекратить поддержку@UiThreadTestRule
. Это позволяет использовать аннотацию@UiThreadTest
непосредственно в методах, помеченных@Before
и@After
- Аннотация
@SdkSupress
теперь поддерживает значениеmaxSdkVersion
(ошибка 37067792 ). -
-e classLoader
– обеспечивает возможность передавать загрузчики классов с помощью аргументов бегуна. -
-e filter
— добавить поддержку пользовательских фильтров JUnit, которые будут указываться с помощью аргументов бегуна. -
-e runnerBuilder
— позволяет разработчикам предоставлять свои собственные реализацииRunnerBuilder
, которые могут определять, могут ли они работать с определенным классом и если да, то каким образом.
-
- Правила
-
ProviderTestRule
— новый API для тестирования объектовContentProvider
. -
getActivityResult()
иActivityResultMatchers
— новый API для получения результата действия, вызвавшегоsetResult()
-
- AndroidTestOrchestrator
- Android Test Orchestrator предоставляет новый способ сбора и выполнения тестов с упором на правильность и изоляцию. Оркестратор — это независимый процесс инструментирования, который создает один процесс запуска инструментов для каждого теста и собирает результаты.
- Сбои приложения приводят к отключению инструментов выполнения, но не оркестратора, что позволяет продолжить работу набора тестов.
- Требуется установка APK-файла оркестратора —
'com.android.support.test:orchestrator:1.0.0'
- Версия 1.0 имеет только интерфейс командной строки; планируется интеграция с Android Studio и Firebase Test Labs
- Android Test Orchestrator предоставляет новый способ сбора и выполнения тестов с упором на правильность и изоляцию. Оркестратор — это независимый процесс инструментирования, который создает один процесс запуска инструментов для каждого теста и собирает результаты.
Исправления ошибок
- Эспрессо
- Улучшена синхронизация корневого представления, что значительно снижает нестабильность.
- Исправить повреждение
IdlingResourceRegistry
- Улучшенная синхронизация с объектами
IdlingResource
. - Проблема 37132680 : Espresso не ждет завершения создания диалогового окна перед выполнением следующего действия.
- Проблема 37103280 : Espresso должна предоставлять потребительские правила ProGuard, чтобы потребителям не требовалось их добавлять.
- Проблема 37094726 : Espresso Intents содержит ненужную метку приложения.
- Проблема 37093953 : Эспрессо: нет доступной проверки отсутствия или пустого текста ошибки.
- Проблема 37071776 :
espresso-core
встраивает файлы.pom
Guava. - Проблема 37062612 : NPE в
release()
- Проблема 37063389 : использование Guava и
espresso-web
в качестве зависимостейandroidTest
не компилируется. - Проблема 37070533 : добавление поддержки
NavigationView
в библиотеку поддержки дизайна Android.
- бегун
- Исправлена возможность использования
@UiThreadTest
в сочетании с@Test(timeout = 123)
- Исправлен аргумент
-e notClass
бегуна. - Исправлен
-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 февраля 2016 г., тихий выпуск)
Новые возможности
- эспрессо
- Проблема 194253 : добавление поддержки NavigationView в библиотеку дизайна поддержки Android.
- Добавлены проверки включенной анимации и переходов.
- Новый API
ViewMatcher
:withResourceName()
Исправления ошибок
- эспрессо
- Проблема 195331 : espresso-core встраивает pom-файлы гуавы.
- Перенесен подсчет ресурсов на холостом ходу из espresso-contrib.
- правила
- Проблема 187249 : NPE в
Intents.release()
- Проблема 187249 : NPE в
- бегун
- Проблема 196066: аргумент
-e log true
вAndroidJUnitRunner
не обходит фактическое тестирование. - Дождитесь отладчика в
onCreate()
бегуна. - Все поддерживаемые тестовые аннотации перенесены с платформы в ATSL.
- Удален дамп трассировки стека об отсутствии JSBridge.
- Исправлен
AndroidAnnotatedBuilder
- Проблема 196066: аргумент
Другие заметные изменения
-
ActivityTestRule
,UiThreadTestRule
,IntentsTestRule
иServiceTestRule
вышли из бета-версии. - Добавьте файл настроек стиля кода для единообразного форматирования кода.
Эспрессо 2.2.1, Runner/Rules 0.4 (15 сентября 2015 г.)
Новые возможности
- правила
- Добавлен новый конструктор
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()
на уровне API 21 и выше. - Исправлена синхронизация анимации закрытия клавиатуры на уровне API 23.
-
- правила
- Исправлено
ServiceTestRule
на уровне API 23,startService()
всегда должен вызываться с явнымIntent
- Исправлено
- бегун
- Исправлена сломанная поддержка Gradle
JaCoCo
- Исправлена неработающая поддержка тестового сегментирования.
- Исправлено несогласованное состояние в средстве выполнения тестов после тайм-аутов тестов в стиле
JUnit3
- Исправлена сломанная поддержка Gradle
Другие заметные изменения
- Исправления Javadoc и улучшения сообщений об ошибках
- Игнорируйте методы
suite()
и не игнорируйте ошибки инициализации при использовании фильтров методов.
Эспрессо 2.2 / ATSL 0.3 (09.06.2015)
Новые возможности
- эспрессо-веб 2.2
- Новая поддержка
WebView
- Новая поддержка
- эспрессо-ядро 2.2
- Перешел на использование Dagger v2.
- Перенесен на использование подколенного сустава v1.3.
- эспрессо-вклад 2.2
- Проверки доступности
- Поддержка гравитации
DrawerActions
- правила 0.3
- Правило
DisableOnAndroidDebug
- Правило
- бегун 0.3
- Обновление с JUnit v4.10 до JUnit v4.12
- Перенесен на использование Hamcrest v1.3.
Исправления ошибок
- Исправлена утечка
ParentListener
изDrawerActions
- Ошибка предположения теперь рассматривается как игнорируемый тест, а не как неудачный тест.
- Исправлены экземпляры активности
MonitoringInstrumentation
черезExecutorService
- Исправлено зависание бесхозных действий на стадии остановки.
- Обновите
Until.scrollFinished()
, чтобы он возвращал true, если события прокрутки не были созданы. Защититесь от потенциального NPE вUiObject2#setText()
.
Espresso 2.1, Test Runner/Rules 0.2 и UIAutomator 2.1.0 (21 апреля 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. - Перегрузка идентификатора
resId
ViewMatchers.withContentDescription()
-
- правила
-
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 марта 2015 г.)
UI Automator теперь основан на инструментах Android, и вы можете создавать и запускать тесты с помощью команды ./gradlew connectedCheck
.
Эспрессо версия 2.0, Test Runner 0.1 (дата выпуска: 19 декабря 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
(как и всегда должно быть).
-
- Необязательное (зависимость гуавы) было удалено из общедоступного API, чтобы поддержать переупаковку зависимости гуавы и избежать коллизий DEX (основной источник проблем при разработке). Затронутые методы включают следующее:
-
ViewAssertion.check()
-
HumanReadables.getViewHierarchyErrorMessage()
-
Новые возможности
- Действия
-
ViewActions
-
replaceText()
-
openLink()
- Проведите пальцем вверх и вниз
-
- эспрессо-вклад
-
RecyclerViewActions
: обрабатывает взаимодействие сRecyclerViews
-
PickerActions
: обрабатывает взаимодействие с средствами выбораDate
иTime
.
-
-
- Матчеры
-
RootMatchers
-
isPlatformPopup()
-
-
ViewMatchers
-
isJavascriptEnabled()
-
withSpinnerText()
-
withHint()
-
isSelected()
-
hasLinks()
-
-
LayoutMatchers
: средства сопоставления для тестирования макета, связанного с i18n. -
CursorMatchers
: коллекция сопоставителей для объектовCursor
.
-
- Утверждения
-
PositionAssertions
, включаяisLeftOf()
иisAbove()
: наборViewAssertions
для проверки относительного положения элементов на экране. -
LayoutAssertions
: утверждения для тестирования макета, связанного с i18n.
-
- Тестовое приложение: множество новых примеров заданий/тестов.
- Другой
-
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 (Дата выпуска: 8 января 2014 г.)
Эспрессо
- Новые действия
swipeLeft
иswipeRight
ViewActions
- Поддержка нескольких окон: расширенная функция, позволяющая выбрать целевое окно, в котором Espresso должен выполнить операцию.
- Улучшения в
TypeTextAction
: позволяет вводить текст в предварительно сфокусированном виде, что упрощает добавление текста. - Многочисленные исправления ошибок
Библиотека вкладов эспрессо
- Эта новая библиотека содержит функции, дополняющие Espresso, но не являющиеся частью основной библиотеки.
- Новые
DrawerActions
для работы сDrawerLayout
: зависят от библиотеки поддержки Android, поэтому мы храним их вне основной библиотеки Espresso.
Примеры тестов
- Эти тесты были перенесены в тот же пакет, что и тестовое приложение.
- Исправлены POM Maven для удаления дубликатов данных гуавы, поэтому
mvn install
теперь должна работать.
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 (13 декабря 2018 г.)
Это стабильная версия 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 (06.12.2018)
- Основной
- Новый артефакт расширения Kotlin core-ktx! Включает удобный для Kotlin API ActivityScenario.launchActivity.
- Новый API ActivityScenario для запуска действий с настраиваемыми намерениями.
- Новый API ActivityScenario для получения результата действия.
- Сделать ActivityScenario закрываемым
- Эспрессо
- Измените withResourceNameMatcher и HumanReadables, чтобы они были совместимы с API 28.
- Обновите описание replaceTextAction, включив в него stringToBeSet.
- Поддержка эспрессо в режиме паузы лупера Robolectric.
- Юнит
- Новый API ActivityScenarioRule для автоматического запуска и закрытия действия при тестовой настройке и удалении.
- Новый артефакт расширения Kotlin junit-ktx! Включает API ActivityScenarioRule, совместимый с Kotlin.
- бегун
- Сделать -e package и -e testFile согласованными в поведении при получении пакетов.
- Правда
- Добавление API-интерфейсов bool, посылки и посылкиAsType BundleSubject.
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 (24 октября 2018 г.)
- Все
- Установите 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
- Включайте обработку покрытия оркестратора только в том случае, если переданы оба аргумента «покрытие» и «coverageFilePath».
- Ожидайте отладчика только тогда, когда установлен параметр -debug, но не для вывода списка тестовых случаев ATO. Был добавлен новый флаг оркестратораDebug для отладки самого оркестратора.
- Основной
- Новый артефакт! Включает новые API, которые поддерживают как локальные тесты, так и тесты на устройстве для:
- Получение контекста: ApplicationProvider
- Управление жизненными циклами действий: ActivityScenario(beta)
- Разработчики для MotionEvent, PackageInfo
- Утилита Parceables
- Новый артефакт! Включает новые API, которые поддерживают как локальные тесты, так и тесты на устройстве для:
- Правда
- Новый артефакт! Включает пользовательские темы правды для Notification, Intent, Bundle, Parcelable и MotionEvent.
- Юнит
- Новый артефакт! Включает класс запуска 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 (16 апреля 2018 г.)
- Эспрессо
- Критическое изменение API:
- В выпуске 64062890 наше внимание было обращено на то, что мы использовали Guava необязательно в нашем общедоступном API. Это было ужасное упущение с нашей стороны. В результате в этом выпуске есть критическое изменение общедоступного API для решения этой проблемы. Мы представили уродливую оболочку вокруг дополнительного класса Guava под названием EspressoOptional, которая находится в пространстве имен «android.support.test.espresso.util». Разработчикам, которые использовали просочившийся дополнительный API Guava, необходимо изменить импорт и ссылки, чтобы использовать EspressoOptional во время обновления до этой новой версии. Приносим извинения за возможные неудобства.
- API-интерфейсы onView() и onData() теперь помечены @CheckReturnValue для предотвращения ошибок.
- Исправлен POM-файл ядра эспрессо, который не извлекал зависимость «правил», вместо этого POM-намерения эспрессо извлекали его. Это должно стать изменением NoOp для разработчиков, поскольку эспрессо-намерения нельзя использовать без эспрессо-ядра.
- Проблема 65486414 : в эспрессо отсутствует зависимость от гуавы.
- Проблема 65576174 : Espresso IdlingResourceRegistry.sync вызывает сбой второго теста.
- Проблема 65568629 : Espresso.onIdle не использует IdlingRegistry.
- Проблема 69333598 : эспрессо 3.0.1 несовместим с play-services-auth:11.6.0 в модуле библиотеки Android.
- Проблема 64062890 : Внутренний дополнительный тип, предоставляемый интерфейсом AdaptorViewProtocol.
- Проблема 64091847 : Espresso 3.0.0 НЕ должна зависеть от средства запуска тестов.
- Проблема 73722050 : пакеты espresso-contrib 3.0.2-alpha1 и классы android.arch.{lifecycle/core}
- Критическое изменение API:
- Эспрессо-пульт
- Это совершенно новый артефакт. Мы отделили всю многопроцессную функциональность Espresso от артефакта ядра эспрессо. Это чище и должно значительно уменьшить общий размер espresso-core и количество методов.
- бегун
- Усекать трассировку стека, если он слишком велик для транзакции связывания. Поскольку AJUR необходимо сообщать об ошибках обратно в AM через IPC связывателя, нам необходимо убедиться, что мы не превышаем лимит транзакций Binder, который составляет 1 МБ на процесс.
- Проблема 65828576 : сбой TestRequestBuilder при запуске теста в классе с @Ignore.
- Проблема 37057596 : мы не обрабатываем сбои в @BeforeClass.
- Правила
- Обязательно выпустите ссылку на тестируемую деятельность после изменений жизненного цикла. Во время теста теперь можно напрямую манипулировать действием, используя ссылку, полученную из #getActivity(). Если действие завершено и перезапущено, ссылка, возвращаемая #getActivity(), теперь всегда указывает на текущий экземпляр действия. .
- Проблема 64389280 : GrantPermissionRule не предоставляет WRITE_EXTERNAL_STORAGE.
- Проблема 37065965 : ActivityTestRule пропускает активность после изменения ориентации.
- Проблема 75254050 : ActivityTestRule не обновляет экземпляр Activity во время изменений конфигурации.
- Проблема 64464625 : Невозможно выполнить работу пользовательского интерфейса в методе Finish() действия.
- AndroidTestOrchestrator
- Передайте
-e coverage true -e coverageFilePath /sdcard/foo/
flags для создания файлов покрытия в заданном месте (приложение должно иметь разрешение на запись в указанное расположение). Соглашение об именовании файлов покрытия теперь выглядит следующим образом:com.foo.Class#method1.ec
. Обратите внимание: это поддерживается только при работе в изолированном режиме. Кроме того, его нельзя использовать вместе с флагомcoverageFile
AndroidJUnitRunner. Так как сгенерированные файлы покрытия перезаписывают друг друга. - Передайте флаг
-e clearPackageData
если вы хотите, чтобы оркестратор запускал командыpm clear context.getPackageName()
иpm clear targetContext.getPackageName()
между вызовами тестов. Обратите внимание, что контекстом команды очистки является контекст тестируемого приложения. - Исправлено — при запуске пустого теста, т.е. нет @Test внутри цели, результат теста отличается от устаревшего режима.
- Проблема 72758547 : оркестратор тестирования приводит к тому, что данные о покрытии Jacoco становятся неполными, имеются только данные последнего запуска теста.
- Проблема 67916042 : Оркестратор тестов Android: выполнение остановлено при сбое процесса из-за OutOfMemory
- Проблема 77752735 : Оркестратор аварийно завершает работу из-за исключения TransactionTooLargeException.
- Проблема 77549481 : Оркестратор тестирования должен запускать команду «pmclear» после каждого теста.
- Передайте
Espresso 3.0.2-alpha1, Runner 1.0.2-alpha1, Rules 1.0.2-alpha1, AndroidTestOrchestrator 1.0.2-alpha1 (05.12.2017)
Эспрессо
-
Intents
теперь имеет вызываемый ответ, что позволяет выполнять тесты после захвата запущенного намерения, но до возврата объекта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 (28 августа 2017 г.)
Эспрессо
- Добавлен параметр
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 июля 2017 г., Объявление )
Критические изменения
- Все артефакты
- Прекращение поддержки уровней API ниже 15, однако минимальный SDK по-прежнему указывает на уровень API 9, чтобы дать пользователям время для обновления.
- Эспрессо
- Устаревший класс
android.support.test.espresso.contrib.CountingIdlingResource
был удален и перемещен вandroid.support.test.espresso.idling.CountingIdlingResource
- Используйте
getInstance().register()
вместоregisterIdlingResources()
- Используйте
- Guava теперь перенесена в другое «внутреннее» пространство имен — если вы случайно используете API Guava через пространства имен Espresso, вы можете увидеть сбои.
- Удалите все ссылки на затененную гуаву (
.core.deps.guava.
). - Обновите версию библиотеки поддержки до 25.4.0 или выше.
- Удалите все ссылки на затененную гуаву (
- Устаревший класс
Известные проблемы
- AndroidTestOrchestrator
- Аргументы запуска
-e numShards
и-e shardIndex
в настоящее время не поддерживаются. - Параметризованные тесты в настоящее время не поддерживаются.
- Аргументы запуска
Новые возможности
- Эспрессо
- Новая поддержка Multiprocess 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()
но не выдает исключение при навигации по эспрессо. -
noActivity()
— устраняет необходимость ожидания действия перед выполнениемViewAction
илиViewAssertion
-
onIdle()
— зацикливает основной поток до тех пор, пока приложение не перейдет в режим ожидания. -
onIdle(Callable<T>)
— то же, чтоonIdle()
, но принимает дополнительныйCallable
в качестве параметра, который выполняется после того, как приложение переходит в режим ожидания.
-
-
webScrollIntoView()
– новый атомespresso-web
, который позволяет прокручивать внутриWebView
- Новая поддержка Multiprocess Espresso в API 26 для
- бегун
-
InterceptingActivityFactory
иSingleActivityFactory
— предоставляет возможность тестирования активности изолированно от внешнего мира путем переопределения таких методов, какstartService()
иsendBroadcast()
- Добавить поддержку использования JUnitParams с
AndroidJUnitRunner
- Начать обработку
@UiThreadTest
на уровне основного средства запуска тестов и прекратить поддержку@UiThreadTestRule
. Это позволяет использовать аннотацию@UiThreadTest
непосредственно в методах, помеченных@Before
и@After
- Аннотация
@SdkSupress
теперь поддерживает значениеmaxSdkVersion
(ошибка 37067792 ). -
-e classLoader
– обеспечивает возможность передавать загрузчики классов с помощью аргументов бегуна. -
-e filter
— добавить поддержку пользовательских фильтров JUnit, которые будут указываться с помощью аргументов бегуна. -
-e runnerBuilder
— позволяет разработчикам предоставлять свои собственные реализацииRunnerBuilder
, которые могут определять, могут ли они работать с определенным классом и если да, то каким образом.
-
- Правила
-
ProviderTestRule
— новый API для тестирования объектовContentProvider
. -
getActivityResult()
иActivityResultMatchers
— новый API для получения результата действия, вызвавшегоsetResult()
-
- AndroidTestOrchestrator
- Android Test Orchestrator предоставляет новый способ сбора и выполнения тестов с упором на правильность и изоляцию. Оркестратор — это независимый процесс инструментирования, который создает один процесс запуска инструментов для каждого теста и собирает результаты.
- Сбои приложения приводят к отключению инструментов выполнения, но не оркестратора, что позволяет продолжить работу набора тестов.
- Требуется установка APK-файла оркестратора —
'com.android.support.test:orchestrator:1.0.0'
- Версия 1.0 имеет только интерфейс командной строки; планируется интеграция с Android Studio и Firebase Test Labs
- Android Test Orchestrator предоставляет новый способ сбора и выполнения тестов с упором на правильность и изоляцию. Оркестратор — это независимый процесс инструментирования, который создает один процесс запуска инструментов для каждого теста и собирает результаты.
Исправления ошибок
- Эспрессо
- Улучшена синхронизация корневого представления, что значительно снижает нестабильность.
- Исправить повреждение
IdlingResourceRegistry
- Улучшенная синхронизация с объектами
IdlingResource
. - Проблема 37132680 : Espresso не ждет завершения создания диалогового окна перед выполнением следующего действия.
- Проблема 37103280 : Espresso должна предоставлять потребительские правила ProGuard, чтобы потребителям не требовалось их добавлять.
- Проблема 37094726 : Espresso Intents содержит ненужную метку приложения.
- Проблема 37093953 : Эспрессо: нет доступной проверки отсутствия или пустого текста ошибки.
- Проблема 37071776 :
espresso-core
встраивает файлы.pom
Guava. - Проблема 37062612 : NPE в
release()
- Проблема 37063389 : использование Guava и
espresso-web
в качестве зависимостейandroidTest
не компилируется. - Проблема 37070533 : добавление поддержки
NavigationView
в библиотеку поддержки дизайна Android.
- бегун
- Исправлена возможность использования
@UiThreadTest
в сочетании с@Test(timeout = 123)
- Исправлен аргумент
-e notClass
бегуна. - Исправлен
-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 февраля 2016 г., тихий выпуск)
Новые возможности
- эспрессо
- Проблема 194253 : добавление поддержки NavigationView в библиотеку дизайна поддержки Android.
- Добавлены проверки включенной анимации и переходов.
- Новый API
ViewMatcher
:withResourceName()
Исправления ошибок
- эспрессо
- Проблема 195331 : espresso-core встраивает pom-файлы гуавы.
- Перенесен подсчет ресурсов на холостом ходу из espresso-contrib.
- правила
- Проблема 187249 : NPE в
Intents.release()
- Проблема 187249 : NPE в
- бегун
- Проблема 196066: аргумент
-e log true
вAndroidJUnitRunner
не обходит фактическое тестирование. - Дождитесь отладчика в
onCreate()
бегуна. - Все поддерживаемые тестовые аннотации перенесены с платформы в ATSL.
- Удален дамп трассировки стека об отсутствии JSBridge.
- Исправлен
AndroidAnnotatedBuilder
- Проблема 196066: аргумент
Другие заметные изменения
-
ActivityTestRule
,UiThreadTestRule
,IntentsTestRule
иServiceTestRule
вышли из бета-версии. - Добавьте файл настроек стиля кода для единообразного форматирования кода.
Эспрессо 2.2.1, Runner/Rules 0.4 (15 сентября 2015 г.)
Новые возможности
- правила
- Добавлен новый конструктор
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()
на уровне API 21 и выше. - Исправлена синхронизация анимации закрытия клавиатуры на уровне API 23.
-
- правила
- Исправлено
ServiceTestRule
на уровне API 23,startService()
всегда должен вызываться с явнымIntent
- Исправлено
- бегун
- Исправлена сломанная поддержка Gradle
JaCoCo
- Исправлена неработающая поддержка тестового сегментирования.
- Исправлено несогласованное состояние в средстве выполнения тестов после тайм-аутов тестов в стиле
JUnit3
- Исправлена сломанная поддержка Gradle
Другие заметные изменения
- Исправления Javadoc и улучшения сообщений об ошибках
- Игнорируйте методы
suite()
и не игнорируйте ошибки инициализации при использовании фильтров методов.
Эспрессо 2.2 / ATSL 0.3 (09.06.2015)
Новые возможности
- эспрессо-веб 2.2
- Новая поддержка
WebView
- Новая поддержка
- эспрессо-ядро 2.2
- Перешел на использование Dagger v2.
- Перенесен на использование подколенного сустава v1.3.
- эспрессо-вклад 2.2
- Проверки доступности
- Поддержка гравитации
DrawerActions
- правила 0.3
- Правило
DisableOnAndroidDebug
- Правило
- бегун 0.3
- Обновление с JUnit v4.10 до JUnit v4.12
- Перенесен на использование Hamcrest v1.3.
Исправления ошибок
- Исправлена утечка
ParentListener
изDrawerActions
- Ошибка предположения теперь рассматривается как игнорируемый тест, а не как неудачный тест.
- Исправлены экземпляры активности
MonitoringInstrumentation
черезExecutorService
- Исправлено зависание бесхозных действий на стадии остановки.
- Обновите
Until.scrollFinished()
, чтобы он возвращал true, если события прокрутки не были созданы. Защититесь от потенциального NPE вUiObject2#setText()
.
Espresso 2.1, Test Runner/Rules 0.2 и UIAutomator 2.1.0 (21 апреля 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. - Перегрузка идентификатора
resId
ViewMatchers.withContentDescription()
-
- правила
-
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 марта 2015 г.)
UI Automator теперь основан на инструментах Android, и вы можете создавать и запускать тесты с помощью команды ./gradlew connectedCheck
.
Эспрессо версия 2.0, Test Runner 0.1 (дата выпуска: 19 декабря 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
(как и всегда должно быть).
-
- Необязательное (зависимость гуавы) было удалено из общедоступного API, чтобы поддержать переупаковку зависимости гуавы и избежать коллизий DEX (основной источник проблем при разработке). Затронутые методы включают следующее:
-
ViewAssertion.check()
-
HumanReadables.getViewHierarchyErrorMessage()
-
Новые возможности
- Действия
-
ViewActions
-
replaceText()
-
openLink()
- Проведите пальцем вверх и вниз
-
- эспрессо-вклад
-
RecyclerViewActions
: обрабатывает взаимодействие сRecyclerViews
-
PickerActions
: обрабатывает взаимодействие с средствами выбораDate
иTime
.
-
-
- Матчеры
-
RootMatchers
-
isPlatformPopup()
-
-
ViewMatchers
-
isJavascriptEnabled()
-
withSpinnerText()
-
withHint()
-
isSelected()
-
hasLinks()
-
-
LayoutMatchers
: средства сопоставления для тестирования макета, связанного с i18n. -
CursorMatchers
: коллекция сопоставителей для объектовCursor
.
-
- Утверждения
-
PositionAssertions
, включаяisLeftOf()
иisAbove()
: наборViewAssertions
для проверки относительного положения элементов на экране. -
LayoutAssertions
: утверждения для тестирования макета, связанного с i18n.
-
- Тестовое приложение: множество новых примеров заданий/тестов.
- Другой
-
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 (Дата выпуска: 8 января 2014 г.)
Эспрессо
- Новые действия
swipeLeft
иswipeRight
ViewActions
- Поддержка нескольких окон: расширенная функция, позволяющая выбрать целевое окно, в котором Espresso должен выполнить операцию.
- Улучшения в
TypeTextAction
: позволяет вводить текст в предварительно сфокусированном виде, что упрощает добавление текста. - Многочисленные исправления ошибок
Библиотека вкладов эспрессо
- Эта новая библиотека содержит функции, дополняющие Espresso, но не являющиеся частью основной библиотеки.
- Новые
DrawerActions
для работы сDrawerLayout
: зависят от библиотеки поддержки Android, поэтому мы храним их вне основной библиотеки Espresso.
Примеры тестов
- Эти тесты были перенесены в тот же пакет, что и тестовое приложение.
- Исправлены POM Maven для удаления дубликатов данных гуавы, поэтому
mvn install
теперь должна работать.
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 (13 декабря 2018 г.)
Это стабильная версия 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 (06.12.2018)
- Основной
- Новый артефакт расширения Kotlin core-ktx! Включает удобный для Kotlin API ActivityScenario.launchActivity.
- Новый API ActivityScenario для запуска действий с настраиваемыми намерениями.
- Новый API ActivityScenario для получения результата действия.
- Сделать ActivityScenario закрываемым
- Эспрессо
- Измените withResourceNameMatcher и HumanReadables, чтобы они были совместимы с API 28.
- Обновите описание replaceTextAction, включив в него stringToBeSet.
- Поддержка эспрессо в режиме паузы лупера Robolectric.
- Юнит
- Новый API ActivityScenarioRule для автоматического запуска и закрытия действия при тестовой настройке и удалении.
- Новый артефакт расширения Kotlin junit-ktx! Включает API ActivityScenarioRule, совместимый с Kotlin.
- бегун
- Сделать -e package и -e testFile согласованными в поведении при получении пакетов.
- Правда
- Добавление API-интерфейсов bool, посылки и посылкиAsType BundleSubject.
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 (24 октября 2018 г.)
- Все
- Установите 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
- Включайте обработку покрытия оркестратора только в том случае, если переданы оба аргумента «покрытие» и «coverageFilePath».
- Ожидайте отладчика только тогда, когда установлен параметр -debug, но не для вывода списка тестовых случаев ATO. Был добавлен новый флаг оркестратораDebug для отладки самого оркестратора.
- Основной
- Новый артефакт! Включает новые API, которые поддерживают как локальные тесты, так и тесты на устройстве для:
- Получение контекста: ApplicationProvider
- Управление жизненными циклами действий: ActivityScenario(beta)
- Разработчики для MotionEvent, PackageInfo
- Утилита Parceables
- Новый артефакт! Включает новые API, которые поддерживают как локальные тесты, так и тесты на устройстве для:
- Правда
- Новый артефакт! Включает пользовательские темы правды для Notification, Intent, Bundle, Parcelable и MotionEvent.
- Юнит
- Новый артефакт! Включает класс запуска 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 (16 апреля 2018 г.)
- Эспрессо
- Критическое изменение API:
- В выпуске 64062890 наше внимание было обращено на то, что мы использовали Guava необязательно в нашем общедоступном API. Это было ужасное упущение с нашей стороны. В результате в этом выпуске есть критическое изменение общедоступного API для решения этой проблемы. Мы представили уродливую оболочку вокруг дополнительного класса Guava под названием EspressoOptional, которая находится в пространстве имен «android.support.test.espresso.util». Разработчикам, которые использовали просочившийся дополнительный API Guava, необходимо изменить импорт и ссылки, чтобы использовать EspressoOptional во время обновления до этой новой версии. Приносим извинения за возможные неудобства.
- API-интерфейсы onView() и onData() теперь помечены @CheckReturnValue для предотвращения ошибок.
- Исправлен POM-файл ядра эспрессо, который не извлекал зависимость «правил», вместо этого POM-намерения эспрессо извлекали его. Это должно стать изменением NoOp для разработчиков, поскольку эспрессо-намерения нельзя использовать без эспрессо-ядра.
- Проблема 65486414 : в эспрессо отсутствует зависимость от гуавы.
- Проблема 65576174 : Espresso IdlingResourceRegistry.sync вызывает сбой второго теста.
- Проблема 65568629 : Espresso.onIdle не использует IdlingRegistry.
- Проблема 69333598 : эспрессо 3.0.1 несовместим с play-services-auth:11.6.0 в модуле библиотеки Android.
- Проблема 64062890 : Внутренний дополнительный тип, предоставляемый интерфейсом AdaptorViewProtocol.
- Проблема 64091847 : Espresso 3.0.0 НЕ должна зависеть от средства запуска тестов.
- Проблема 73722050 : пакеты espresso-contrib 3.0.2-alpha1 и классы android.arch.{lifecycle/core}
- Критическое изменение API:
- Эспрессо-пульт
- Это совершенно новый артефакт. Мы отделили всю многопроцессную функциональность Espresso от артефакта ядра эспрессо. Это чище и должно значительно уменьшить общий размер espresso-core и количество методов.
- бегун
- Усекать трассировку стека, если он слишком велик для транзакции связывания. Поскольку AJUR необходимо сообщать об ошибках обратно в AM через IPC связывателя, нам необходимо убедиться, что мы не превышаем лимит транзакций Binder, который составляет 1 МБ на процесс.
- Проблема 65828576 : сбой TestRequestBuilder при запуске теста в классе с @Ignore.
- Проблема 37057596 : мы не обрабатываем сбои в @BeforeClass.
- Правила
- Обязательно выпустите ссылку на тестируемую деятельность после изменений жизненного цикла. Во время теста теперь можно напрямую манипулировать действием, используя ссылку, полученную из #getActivity(). Если действие завершено и перезапущено, ссылка, возвращаемая #getActivity(), теперь всегда указывает на текущий экземпляр действия. .
- Проблема 64389280 : GrantPermissionRule не предоставляет WRITE_EXTERNAL_STORAGE.
- Проблема 37065965 : ActivityTestRule пропускает активность после изменения ориентации.
- Проблема 75254050 : ActivityTestRule не обновляет экземпляр Activity во время изменений конфигурации.
- Проблема 64464625 : Невозможно выполнить работу пользовательского интерфейса в методе Finish() действия.
- AndroidTestOrchestrator
- Передайте
-e coverage true -e coverageFilePath /sdcard/foo/
flags для создания файлов покрытия в заданном месте (приложение должно иметь разрешение на запись в указанное расположение). Соглашение об именовании файлов покрытия теперь выглядит следующим образом:com.foo.Class#method1.ec
. Обратите внимание: это поддерживается только при работе в изолированном режиме. Кроме того, его нельзя использовать вместе с флагомcoverageFile
AndroidJUnitRunner. Так как сгенерированные файлы покрытия перезаписывают друг друга. - Передайте флаг
-e clearPackageData
если вы хотите, чтобы оркестратор запускал командыpm clear context.getPackageName()
иpm clear targetContext.getPackageName()
между вызовами тестов. Обратите внимание, что контекстом команды очистки является контекст тестируемого приложения. - Исправлено — при запуске пустого теста, т.е. нет @Test внутри цели, результат теста отличается от устаревшего режима.
- Проблема 72758547 : оркестратор тестирования приводит к тому, что данные о покрытии Jacoco становятся неполными, имеются только данные последнего запуска теста.
- Проблема 67916042 : Оркестратор тестов Android: выполнение остановлено при сбое процесса из-за OutOfMemory
- Проблема 77752735 : Оркестратор аварийно завершает работу из-за исключения TransactionTooLargeException.
- Проблема 77549481 : Оркестратор тестирования должен запускать команду «pmclear» после каждого теста.
- Передайте
Espresso 3.0.2-alpha1, Runner 1.0.2-alpha1, Rules 1.0.2-alpha1, AndroidTestOrchestrator 1.0.2-alpha1 (05.12.2017)
Эспрессо
-
Intents
теперь имеет вызываемый ответ, что позволяет выполнять тесты после захвата запущенного намерения, но до возврата объекта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 (28 августа 2017 г.)
Эспрессо
- Добавлен параметр
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 июля 2017 г., Объявление )
Критические изменения
- Все артефакты
- Прекращение поддержки уровней API ниже 15, однако минимальный SDK по-прежнему указывает на уровень API 9, чтобы дать пользователям время для обновления.
- Эспрессо
- Устаревший класс
android.support.test.espresso.contrib.CountingIdlingResource
был удален и перемещен вandroid.support.test.espresso.idling.CountingIdlingResource
- Используйте
getInstance().register()
вместоregisterIdlingResources()
- Используйте
- Guava теперь перенесена в другое «внутреннее» пространство имен — если вы случайно используете API Guava через пространства имен Espresso, вы можете увидеть сбои.
- Удалите все ссылки на затененную гуаву (
.core.deps.guava.
). - Обновите версию библиотеки поддержки до 25.4.0 или выше.
- Удалите все ссылки на затененную гуаву (
- Устаревший класс
Известные проблемы
- AndroidTestOrchestrator
- Аргументы запуска
-e numShards
и-e shardIndex
в настоящее время не поддерживаются. - Параметризованные тесты в настоящее время не поддерживаются.
- Аргументы запуска
Новые возможности
- Эспрессо
- Новая поддержка Multiprocess 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()
но не выдает исключение при навигации по эспрессо. -
noActivity()
— устраняет необходимость ожидания действия перед выполнениемViewAction
илиViewAssertion
-
onIdle()
— зацикливает основной поток до тех пор, пока приложение не перейдет в режим ожидания. -
onIdle(Callable<T>)
— то же, чтоonIdle()
, но принимает дополнительныйCallable
в качестве параметра, который выполняется после того, как приложение переходит в режим ожидания.
-
-
webScrollIntoView()
– новый атомespresso-web
, который позволяет прокручивать внутриWebView
- Новая поддержка Multiprocess Espresso в API 26 для
- бегун
-
InterceptingActivityFactory
иSingleActivityFactory
— предоставляет возможность тестирования активности изолированно от внешнего мира путем переопределения таких методов, какstartService()
иsendBroadcast()
- Добавить поддержку использования JUnitParams с
AndroidJUnitRunner
- Начать обработку
@UiThreadTest
на уровне основного средства запуска тестов и прекратить поддержку@UiThreadTestRule
. Это позволяет использовать аннотацию@UiThreadTest
непосредственно в методах, помеченных@Before
и@After
- Аннотация
@SdkSupress
теперь поддерживает значениеmaxSdkVersion
(ошибка 37067792 ). -
-e classLoader
– обеспечивает возможность передавать загрузчики классов с помощью аргументов бегуна. -
-e filter
— добавить поддержку пользовательских фильтров JUnit, которые будут указываться с помощью аргументов бегуна. -
-e runnerBuilder
— позволяет разработчикам предоставлять свои собственные реализацииRunnerBuilder
, которые могут определять, могут ли они работать с определенным классом и если да, то каким образом.
-
- Правила
-
ProviderTestRule
— новый API для тестирования объектовContentProvider
. -
getActivityResult()
иActivityResultMatchers
— новый API для получения результата действия, вызвавшегоsetResult()
-
- AndroidTestOrchestrator
- Android Test Orchestrator предоставляет новый способ сбора и выполнения тестов с упором на правильность и изоляцию. Оркестратор — это независимый процесс инструментирования, который создает один процесс запуска инструментов для каждого теста и собирает результаты.
- Сбои приложения приводят к отключению инструментов выполнения, но не оркестратора, что позволяет продолжить работу набора тестов.
- Требуется установка APK-файла оркестратора —
'com.android.support.test:orchestrator:1.0.0'
- Версия 1.0 имеет только интерфейс командной строки; планируется интеграция с Android Studio и Firebase Test Labs
- Android Test Orchestrator предоставляет новый способ сбора и выполнения тестов с упором на правильность и изоляцию. Оркестратор — это независимый процесс инструментирования, который создает один процесс запуска инструментов для каждого теста и собирает результаты.
Исправления ошибок
- Эспрессо
- Улучшена синхронизация корневого представления, что значительно снижает нестабильность.
- Исправить повреждение
IdlingResourceRegistry
- Улучшенная синхронизация с объектами
IdlingResource
. - Проблема 37132680 : Espresso не ждет завершения создания диалогового окна перед выполнением следующего действия.
- Проблема 37103280 : Espresso должна предоставлять потребительские правила ProGuard, чтобы потребителям не требовалось их добавлять.
- Проблема 37094726 : Espresso Intents содержит ненужную метку приложения.
- Проблема 37093953 : Эспрессо: нет доступной проверки отсутствия или пустого текста ошибки.
- Проблема 37071776 :
espresso-core
встраивает файлы.pom
Guava. - Проблема 37062612 : NPE в
release()
- Проблема 37063389 : использование Guava и
espresso-web
в качестве зависимостейandroidTest
не компилируется. - Проблема 37070533 : добавление поддержки
NavigationView
в библиотеку поддержки дизайна Android.
- бегун
- Исправлена возможность использования
@UiThreadTest
в сочетании с@Test(timeout = 123)
- Исправлен аргумент
-e notClass
бегуна. - Исправлен
-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 февраля 2016 г., тихий выпуск)
Новые возможности
- эспрессо
- Проблема 194253 : добавление поддержки NavigationView в библиотеку дизайна поддержки Android.
- Добавлены проверки включенной анимации и переходов.
- Новый API
ViewMatcher
:withResourceName()
Исправления ошибок
- эспрессо
- Проблема 195331 : espresso-core встраивает pom-файлы гуавы.
- Перенесен подсчет ресурсов на холостом ходу из espresso-contrib.
- правила
- Проблема 187249 : NPE в
Intents.release()
- Проблема 187249 : NPE в
- бегун
- Проблема 196066: аргумент
-e log true
вAndroidJUnitRunner
не обходит фактическое тестирование. - Дождитесь отладчика в
onCreate()
бегуна. - Все поддерживаемые тестовые аннотации перенесены с платформы в ATSL.
- Удален дамп трассировки стека об отсутствии JSBridge.
- Исправлен
AndroidAnnotatedBuilder
- Проблема 196066: аргумент
Другие заметные изменения
-
ActivityTestRule
,UiThreadTestRule
,IntentsTestRule
иServiceTestRule
вышли из бета-версии. - Добавьте файл настроек стиля кода для единообразного форматирования кода.
Эспрессо 2.2.1, Runner/Rules 0.4 (15 сентября 2015 г.)
Новые возможности
- правила
- Добавлен новый конструктор
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()
на уровне API 21 и выше. - Исправлена синхронизация анимации закрытия клавиатуры на уровне API 23.
-
- правила
- Исправлено
ServiceTestRule
на уровне API 23,startService()
всегда должен вызываться с явнымIntent
- Исправлено
- бегун
- Исправлена сломанная поддержка Gradle
JaCoCo
- Исправлена неработающая поддержка тестового сегментирования.
- Исправлено несогласованное состояние в средстве выполнения тестов после тайм-аутов тестов в стиле
JUnit3
- Исправлена сломанная поддержка Gradle
Другие заметные изменения
- Исправления Javadoc и улучшения сообщений об ошибках
- Игнорируйте методы
suite()
и не игнорируйте ошибки инициализации при использовании фильтров методов.
Эспрессо 2.2 / ATSL 0.3 (09.06.2015)
Новые возможности
- эспрессо-веб 2.2
- Новая поддержка
WebView
- Новая поддержка
- эспрессо-ядро 2.2
- Перешел на использование Dagger v2.
- Перенесен на использование подколенного сустава v1.3.
- эспрессо-вклад 2.2
- Проверки доступности
- Поддержка гравитации
DrawerActions
- правила 0.3
- Правило
DisableOnAndroidDebug
- Правило
- бегун 0.3
- Обновление с JUnit v4.10 до JUnit v4.12
- Перенесен на использование Hamcrest v1.3.
Исправления ошибок
- Исправлена утечка
ParentListener
изDrawerActions
- Ошибка предположения теперь рассматривается как игнорируемый тест, а не как неудачный тест.
- Исправлены экземпляры активности
MonitoringInstrumentation
черезExecutorService
- Исправлено зависание бесхозных действий на стадии остановки.
- Обновите
Until.scrollFinished()
, чтобы он возвращал true, если события прокрутки не были созданы. Защититесь от потенциального NPE вUiObject2#setText()
.
Espresso 2.1, Test Runner/Rules 0.2 и UIAutomator 2.1.0 (21 апреля 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. - Перегрузка идентификатора
resId
ViewMatchers.withContentDescription()
-
- правила
-
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 марта 2015 г.)
UI Automator теперь основан на инструментах Android, и вы можете создавать и запускать тесты с помощью команды ./gradlew connectedCheck
.
Эспрессо версия 2.0, Test Runner 0.1 (дата выпуска: 19 декабря 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
(как и всегда должно быть).
-
- Необязательное (зависимость гуавы) было удалено из общедоступного API, чтобы поддержать переупаковку зависимости гуавы и избежать коллизий DEX (основной источник проблем при разработке). Затронутые методы включают следующее:
-
ViewAssertion.check()
-
HumanReadables.getViewHierarchyErrorMessage()
-
Новые возможности
- Действия
-
ViewActions
-
replaceText()
-
openLink()
- Проведите пальцем вверх и вниз
-
- эспрессо-вклад
-
RecyclerViewActions
: обрабатывает взаимодействие сRecyclerViews
-
PickerActions
: обрабатывает взаимодействие с средствами выбораDate
иTime
.
-
-
- Матчеры
-
RootMatchers
-
isPlatformPopup()
-
-
ViewMatchers
-
isJavascriptEnabled()
-
withSpinnerText()
-
withHint()
-
isSelected()
-
hasLinks()
-
-
LayoutMatchers
: средства сопоставления для тестирования макета, связанного с i18n. -
CursorMatchers
: коллекция сопоставителей для объектовCursor
.
-
- Утверждения
-
PositionAssertions
, включаяisLeftOf()
иisAbove()
: наборViewAssertions
для проверки относительного положения элементов на экране. -
LayoutAssertions
: утверждения для тестирования макета, связанного с i18n.
-
- Тестовое приложение: множество новых примеров заданий/тестов.
- Другой
-
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 (Дата выпуска: 8 января 2014 г.)
Эспрессо
- Новые действия
swipeLeft
иswipeRight
ViewActions
- Поддержка нескольких окон: расширенная функция, позволяющая выбрать целевое окно, в котором Espresso должен выполнить операцию.
- Улучшения в
TypeTextAction
: позволяет вводить текст в предварительно сфокусированном виде, что упрощает добавление текста. - Многочисленные исправления ошибок
Библиотека вкладов эспрессо
- Эта новая библиотека содержит функции, дополняющие Espresso, но не являющиеся частью основной библиотеки.
- Новые
DrawerActions
для работы сDrawerLayout
: зависят от библиотеки поддержки Android, поэтому мы храним их вне основной библиотеки Espresso.
Примеры тестов
- Эти тесты были перенесены в тот же пакет, что и тестовое приложение.
- Исправлены POM Maven для удаления дубликатов данных гуавы, поэтому
mvn install
теперь должна работать.