JUnit 5
№ 1
В JUnit5 удобно параметризовать тесты, применяя аннотацию ValueSource
№ 2
Чтобы выполнить в одном тесте много операций, можно использовать аннотации типа Composed Annotation, например @Test, и фильтры в JUnit5
№ 3
В JUnit5 можно применять @DisplayName — кастомное название во время выполнения (вместо поиска названия метода в тесте).
№ 4
В JUnit можно применять лямбды из Java 8 внутри assertion-конструкций
№ 5
В JUnit5 можно пользоваться Assumptions для “создания” определенного состояния (или расположения), например dev-environment’а
№ 6
Можно временно «отключать» тест в JUnit5, добавляя соответствующее описание
№ 7
Можно включать/исключать тест в JUnit5 по заданному условию (например по версии операционки или JDK)
№ 8
В JUnit5 тестам можно присваивать теги. Так их можно группировать по уровням тестирования (или по другим признакам, исходя из ситуации)
№ 9
В JUnit удобно задается порядок запуска тестов
№ 10
В JUnit5 можно запускать тесты или изолированно, или в том же экземпляре, применяя аннотацию @TestInstance
№ 11
В JUnit можно создавать вложенные тесты (Nested Tests)
№ 12
Для некоторых аннотаций в JUnit вместо классов можно применять интерфейсы
№ 13
В JUnit можно повторять тест, указывая количество повторений
№ 14
В JUnit удобная параметризация тестов (кстати, вот материал о параметризации)
№ 15
Можно изменять отображаемое имя теста после его параметризации в JUnit5
№ 16
В JUnit5 можно создавать Шаблоны тестов
№ 17
Можно прописать таймаут, например @Timeout(5), по превышению которого тест/шаблон/метод будет переведен в состояние «fail»
№ 18
В JUnit5 можно запускать тесты параллельно (экспериментальная функция, но работающая)
№ 19
Можно применять @MethodSource, чтобы обратиться к одному или нескольким factory-методам тестового класса, или внешнего класса
№ 20
В JUnit5 есть нативная функциональность загрузки внешних данных при помощи CSV-файла
Selenium WebDriver
№ 21
Selenium Grid Server работает с Docker-образами, в нем удобно распределять веб-тесты и запускать их параллельно
№ 22
Для работы Selenium WebDriver нужно отдельно скачивать бинарники драйверов; так как все собственники браузеров сами имплементируют драйвера для Selenium WD, в стандартный Selenium-пакет они не включены.
№ 23
В Selenium WebDriver удобно искать элементы по их локаторам
№ 24
В Selenium WebDriver отлично поддерживаются функции клика, ввода данных, и перетаскивания мышкой
№ 25
Selenium WebDriver имитирует навигацию по странице — переход “вперед”, “назад”, “обновить страницу”, и управление окнами
№ 26
В Selenium WebDriver есть удобные механизмы ожидания асинхронных действий в браузере
№ 27
В Selenium WebDriver есть ThreadGuard (только для Java!), проверяющий что драйвер вызывается только из потока, в котором создавался
№ 28
Selenium WebDriver умеет обрабатывать всплывающие сообщения трех «нативных» типов: Alert, Prompt, Confirmation
№ 29
Selenium WebDriver умеет работать из-за корпоративного прокси
№ 30
В Selenium WebDriver предусмотрена Стратегия загрузки страницы, в которой можно прописать ожидание — пока все ресурсы страницы не загрузятся, или пока DOM-дерево не будет готово к обработке
№ 31
В Selenium WebDriver есть класс WebElement, через который доступны все свойства веб-элемента
№ 32
В Selenium WebDriver можно вводить текст, очищать поле ввода, или симулировать клавиши Вверх/Вниз
№ 33
В Selenium WebDriver можно запускать тесты в браузере на другом компьютере, применяя Remote WebDriver
№ 34
Настоятельно рекомендуется использовать Page Object Model в Selenium WebDriver
№ 35
В Selenium WebDriver всегда можно создать новый экземпляр браузера, при помощи классов профиля браузера
№ 36
Неправильные практики при автоматизации с WebDriver — по ссылке ниже (спойлер: логин на Gmail и Facebook через WebDriver, и подобное)
№ 37
В WebDriver можно прописывать множество характеристик браузера (даже для IE 11)
№ 38
В Selenium WebDriver есть класс Color, позволяющий проверять цвет любого элемента
№ 39
В Selenium WebDriver элемент Select является единственным со “специальным классом”
№ 40
В Selenium WebDriver можно эмулировать события мышки (клик, удерживание, перетаскивание, клик в контекстном окне и так далее).
WireMock
№ 41
Wiremock может запускаться в разных режимах: “отдельном” standalone-режиме, по правилу JUnit 4.x, или из класса WireMockServer
№42
Mock Server просто и быстро создать, вводя лишь несколько строчек кода в WireMock:
№ 43
В WireMock настраиваются конфигурации — привязки сетей и/или портов, настройки http, проксей, папок с файлами, gzip, CORS и так далее.
№ 44
Можно запустить отдельный WireMock-экземпляр в виртуальном сервисе, запустив jar-файл или через Java-код:
№ 45
В WireMock можно создавать Stub, присваивать приоритет, отправлять заголовки ответа, и прописывать тело ответа на запрос
№ 46
В WireMock можно проверять получение запроса заданного типа, и подтягивать запрошенные данные
№ 47
WireMock умеет сопоставлять запросы по таким характеристикам: URL, HTTP-методам, параметрам запроса, заголовку, способу аутентификации, кукисам, по телу запроса, и по атрибуту multipart/form-data
№ 48
WireMock умеет выборочно пропускать (“проксировать”) запросы к другим хостам
№ 49
В WireMock можно создавать так называемые stub mappings из полученных запросов. Используя прокси-функциональность WireMock, можно «записывать» их в WireMock Recorder, получая данные из API (при помощи JSON API и Java DSL)
№ 50
В WireMock можно прописать Шаблоны Ответов (Response Templates)
№ 51
В WireMock можно прописывать в тесте «ошибочное» поведение, которого сложно добиться в реальных условиях
№ 52
В WireMock можно симулировать Stateful Behavior
№ 53
В WireMock удобно работать с HTTPS-запросами
№ 54
В WireMock можно расширять функциональность — создавая расширения, работая с запросами, параметрами, матчерами запросов, и post-server-действиями
№ 55
В WireMock есть специальная библиотека для работы со Spring Cloud Contract
№ 56
WireMock позволяет добавлять метаданные в “карты заглушек” (stub mappings), для их более удобного поиска/удаления
№ 57
Request Matching позволяет искать что-то через регулярные выражения
№ 58
В WireMock можно указывать тело ответа при помощи строкового литерала, или файла
№ 59
В WireMock есть плагин Maven
№ 60
Можно создать #Docker-контейнер и запустить виртуальный экземпляр WireMock в Service Virtualization
TestNG
№ 61
В TestNG для настройки тестов предусмотрено много полезных параметров командной строки
№ 62
Можно делать Группы тестов (Test Groups), чтобы фильтровать тесты по категориям:
№ 63
В TestNG удобно вставлять данные в тесты аннотацией @Parameter
№ 64
В TestNG можно добавить зависимости между тестами
№ 65
Можно создавать тесты “на лету”, аннотацией @Factory
№ 66
В TestNG можно игнорить некоторые методы @Test в классе или пакете
№ 67
TestNG умеет запускать тесты параллельно, через установку соответствующего атрибута; не только тесты, но и классы, и методы
№ 68
В TestNG можно прописать Retry-стратегию перезапуска “красных” тестов
№ 69
Тесты в TestNG можно запускать «программным» путем
№ 70
В TestNG можно применять выражения из Bean Shell, включая или исключая группы в testsuite.xml
№ 71
Поведение приложения в TestNG можно имитировать при помощи Listener, особенно удобен ITestListener
№ 72
TestNG поддерживает инъекцию зависимостей, добавлением дополнительных параметров в аннотациях
№ 73
В TestNG можно делать свои тест-сьюты с параметрами из XML-файла
№ 74
А также делать тест-сьюты с параметрами взятыми из YAML-файла
№ 75
В NestNG можно вывести список методов теста, запрашиваемых, но реально не вызываемых (DryRun-режим запуска TestNG)
№ 76
В TestNG можно создать внешний класс для управления своими data-driven-тестами, применяя @DataProvider
№ 77
В NestNG можно проверить, ожидается ли исключение: @Test(expectedException = «Exception.class»)
№ 78
В TestNG есть 5 пре- и пост-условий: тест-сьют, тест, группа тестов, класс, и методы
№ 79
Вместо аннотирования каждого метода в @Test можно применить аннотацию ко всему классу
№ 80
В Отчет TestNG можно добавлять любую текстовую информацию
RestAssured
№ 81
RestAssured можно настроить на возвращение в формате BigDecimal вместо float или double
№ 82
В RestAssured можно применять автоматическую сериализацию/десериализацию (что это?); работает с Jackson, Jackson2, GSON или Johnzon
№ 83
В RestAssured можно валидировать JSON Schema.
№ 84
В RestAssured можно извлечь значения из JSON-ответа при помощи JSON Path:
№ 85
В RestAssured можно извлекать значения из XML-ответа при помощи XML Path
№ 86
Из тела ответа можно получить заголовки, кукисы, строку состояния, и код состояния
№ 87
RestAssured автоматически определяет тип параметра, исходя из HTTP-метода; а можно и прямо прописывать
№ 88
Можно более гибко работать с параметрами, меняя fixed-path-параметры на именованные/переименованные (named/unnamed path parameters):
№ 89
В RestAssured можно указывать кукисы для использования в запросе
№ 90
В RestAssured можно указывать один или несколько заголовков запроса
№ 91
Можно продублировать класс с теми же payload-атрибутами, и удобно поработать с ним, а RestAssured сам сделает сериализацию (или отменит ее)
№ 92
В RestAssured можно верифицировать данные ответа: тело ответа, кукисы, статус, заголовки, и content-type
№ 93
RestAssured удобно измеряет время ответа
№ 94
RestAssured позволяет производить Basic Authentication, включая preemptive и digest, и авторизацию в формах, при помощи CSRF
№ 95
В RestAssured можно тестировать аутентификацию как через OAuth-1, так и через OAuth-2
№ 96
В RestAssured можно отправлять большие объемы данных, применяя multipart—метод
№ 97
Можно снизить дублирование кода, применяя Specification Re-Use
№ 98
Прописывая фильтр (Filter), можно проверять и изменять запрос и ответ, перед тем как ответ вернется
№ 99
Можно записать (в Log) весь запрос и ответ; или только если не прошла валидация
№ 100
В RestAssured можно добавить SSL-сертификат для работы с тестами
***
Перепроверить инфу можно на официальных сайтах: