Зачем и как создавать собственные аннотации...

Что такое аннотация в тестах?

Аннотация - это метаданные, которые добавляются к тестовому методу или классу для описания его свойств, поведения или дополнительной информации. Они помогают:

✅ Организовывать тесты (группировка, фильтрация). ✅ Документировать их назначение. ✅ Управлять выполнением (например, пропуск или повтор при падении). ✅ Интегрироваться с инструментами (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-отчёты будут великолепны!

Подробнейшие картинки приложены к этому посту!

Зачем и как создавать собственные аннотации... | Сетка — социальная сеть от hh.ru Зачем и как создавать собственные аннотации... | Сетка — социальная сеть от hh.ru Зачем и как создавать собственные аннотации... | Сетка — социальная сеть от hh.ru Зачем и как создавать собственные аннотации... | Сетка — социальная сеть от hh.ru Зачем и как создавать собственные аннотации... | Сетка — социальная сеть от hh.ru Зачем и как создавать собственные аннотации... | Сетка — социальная сеть от hh.ru