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. Обратите внимание: это поддерживается только при работе в изолированном режиме. Кроме того, его нельзя использовать вместе с флагомcoverageFileAndroidJUnitRunner. Так как сгенерированные файлы покрытия перезаписывают друг друга. - Передайте флаг
-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встраивает файлы.pomGuava. - Проблема 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. - Перегрузка идентификатора
resIdViewMatchers.withContentDescription()
-
- правила
-
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 марта 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иswipeRightViewActions - Поддержка нескольких окон: расширенная функция, позволяющая выбрать целевое окно, в котором 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. Обратите внимание: это поддерживается только при работе в изолированном режиме. Кроме того, его нельзя использовать вместе с флагомcoverageFileAndroidJUnitRunner. Так как сгенерированные файлы покрытия перезаписывают друг друга. - Передайте флаг
-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встраивает файлы.pomGuava. - Проблема 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. - Перегрузка идентификатора
resIdViewMatchers.withContentDescription()
-
- правила
-
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 марта 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иswipeRightViewActions - Поддержка нескольких окон: расширенная функция, позволяющая выбрать целевое окно, в котором 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. Обратите внимание: это поддерживается только при работе в изолированном режиме. Кроме того, его нельзя использовать вместе с флагомcoverageFileAndroidJUnitRunner. Так как сгенерированные файлы покрытия перезаписывают друг друга. - Передайте флаг
-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встраивает файлы.pomGuava. - Проблема 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. - Перегрузка идентификатора
resIdViewMatchers.withContentDescription()
-
- правила
-
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 марта 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иswipeRightViewActions - Поддержка нескольких окон: расширенная функция, позволяющая выбрать целевое окно, в котором Espresso должен выполнить операцию.
- Улучшения в
TypeTextAction: позволяет вводить текст в предварительно сфокусированном виде, что упрощает добавление текста. - Многочисленные исправления ошибок
Библиотека вкладов эспрессо
- Эта новая библиотека содержит функции, дополняющие Espresso, но не являющиеся частью основной библиотеки.
- Новые
DrawerActionsдля работы сDrawerLayout: зависят от библиотеки поддержки Android, поэтому мы храним их вне основной библиотеки Espresso.
Примеры тестов
- Эти тесты были перенесены в тот же пакет, что и тестовое приложение.
- Исправлены POM Maven для удаления дубликатов данных гуавы, поэтому
mvn installтеперь должна работать.