Зачем и как создавать собственные аннотации...
Что такое аннотация в тестах?
Аннотация - это метаданные, которые добавляются к тестовому методу или классу для описания его свойств, поведения или дополнительной информации. Они помогают:
✅ Организовывать тесты (группировка, фильтрация). ✅ Документировать их назначение. ✅ Управлять выполнением (например, пропуск или повтор при падении). ✅ Интегрироваться с инструментами (Allure, JIRA, CI/CD).
Разбор аннотаций в моём тесте, который представлен на картинке.
1. @Test (JUnit)
Что делает: Помечает метод как тестовый. Без этой аннотации JUnit не распознает метод как тест.
2. @Tag("API")
Что делает: Позволяет помечать тесты метками для фильтрации (например, запускать только API-тесты).
3. @Sprint(38) и @Release(5) (Кастомные/Allure)
Что делают: Связывают тест с конкретным спринтом и релизом. Полезно для отчетов в Allure или JIRA.
4. @Suite("Шаблон печати") (Кастомная)
Что делает: Группирует тесты по функциональным сюитам (например, для модульных или E2E-тестов). Аналог: @Suite в JUnit 5 или TestNG.
5. @Story("print-template-controller") (Allure)
Что делает: Связывает тест с пользовательской историей (story) в Agile. Отображается в Allure-отчете.
6. @Feature("Core-aggregator") (Allure)
Что делает: Указывает, к какой функциональности относится тест. Группирует тесты в Allure по фичам.
7. @DisplayName("Тест на успешное обновление...")
Что делает: Задает человекочитаемое название теста (вместо имени метода). Отображается в отчетах и IDE.
8. @Description("Проверка, что можно...") (Allure)
Что делает: Добавляет подробное описание теста в Allure-отчет.
9. @Severity(SeverityLevel.MINOR) (Allure)
Что делает: Определяет важность теста:
BLOCKER — критическая ошибка. MINOR — незначительная проверка. Пример использования: Фильтрация тестов по критичности в Allure.
10. @TmsLink("https://algaid.atlassian.net/...") (Allure/Test Management System)
Что делает: Связывает тест с задачей в JIRA, TMS или другой системе. Пример: В Allure отображается ссылка на задачу.
Зачем всё это нужно?
Читаемость: 😱 @DisplayName и @Description делают тесты понятными без чтения кода.
🔐Фильтрация: Запуск только API-тестов: mvn test -Dgroups=API. Пропуск тестов с @Severity(MINOR).
👀 Отчетность: Allure-отчет с группировкой по @Feature, @Story, @Severity. Связь с JIRA через @TmsLink.
😊Управление тестами: @Tag и @Suite помогают в CI/CD пайплайнах.
Аннотации превращают обычный код в структурированную документацию, которую понимают:
👀 Разработчики (по @Test). 👀 Тестировщики (по @Feature). 👀 Менеджеры (по @Story и @TmsLink). 🤖 CI-системы (по @Tag). Без них тесты были бы "слепыми" и бесполезными для аналитики.
Как создать собственные аннотации, например, @Sprint(38) или @Release(5), которых нет в стандартных аннотациях среды разработки?
Всё очень просто! В базовом модуле нужно создать пакет и интерфейс для каждой аннотации типа: public @interface Sprint { int value(); }
и затем просто импортировать в тестовый класс: import data.annotations.*; И ваши Allure-отчёты будут великолепны!
Подробнейшие картинки приложены к этому посту!