21 июля 2020 2865
В этой статье рассматриваются новые возможности предоставления параметров для модульного тестирования в JUnit 5 с помощью внедрения зависимостей. Мы расскажем, как максимально эффективно проводить тестирование, как использовать различные распознаватели параметров, как писать повторяющиеся и параметризованные тесты.
В этой статье рассматриваются новые возможности предоставления параметров для модульного тестирования в JUnit 5 с помощью внедрения зависимостей. Мы расскажем, как максимально эффективно проводить тестирование, как использовать различные распознаватели параметров, как писать повторяющиеся и параметризованные тесты.

1. Внедрение зависимостей в JUnit 5

Во всех предыдущих версиях JUnit не допускалось включение параметров в конструкторы или методы тестов. Одним из главных нововведений в JUnit 5 стала возможность использования параметров в конструкторах и методах тестов. Это обеспечивает большую гибкость и позволяет использовать внедрение зависимостей для конструкторов и методов.

ParameterResolver определяет API для расширений тестов, которым необходимо динамически распознавать параметры во время выполнения. Если конструктор классов, метод теста или метод жизненного цикла принимает параметр, этот параметр необходимо распознать во время выполнения с помощью зарегистрированного ParameterResolver. Можно внедрить любое необходимое число параметров в любом необходимом порядке.

В настоящее время существует три встроенных распознавателя, однако другие распознаватели параметров должны быть прямо задействованы посредством регистрации соответствующих расширений с помощью @ExtendWith. Автоматически регистрируются следующие распознаватели параметров:

  • TestInfoParameterResolver: Если параметр конструктора или метода имеет тип TestInfo, TestInfoParameterResolver предоставляет экземпляр TestInfo,соответствующий текущему контейнеру или тесту как значению параметра. TestInfo — это класс, объекты которого используются для внедрения информации о текущем выполняемом тесте или контейнере в методы @Test, @BeforeEach, @AfterEach, @BeforeAll и @AfterAll. TestInfo можно затем использовать для получения информации о текущем контейнере или тесте, такой как отображаемое имя, класс теста, метод теста и связанные с ними теги. Отображаемое имя — это либо техническое имя, например имя тестового класса или метода, либо произвольное имя, настраиваемое через @DisplayName. В Примере 1 (Listing 1) показано, как использовать параметр TestInfo в качества аргумента конструктора и аннотированных методов.
  • listing_1
    Затем аннотированный метод @BeforeEach выполняется перед каждым тестом. Он имеет внедренный параметр TestInfo и подтверждает, что отображаемое имя является ожидаемым, т.е. либо именем метода, либо именем, указанным аннотацией @DisplayName (2).

    Оба теста имеют внедренный параметр TestInfo. Каждый из них подтверждает, что отображаемое имя является ожидаемым, т.е. либо именем метода для первого теста (3), либо именем, указанным аннотацией @DisplayName для второго теста (4).

    Напомним, что встроенный TestInfoParameterResolver предоставляет экземпляр TestInfo соответствующий текущему контейнеру или тесту как значение для ожидаемых параметров конструктора и методов.

  • TestReporterParameterResolver. Если параметр конструктора или метода имеет тип TestReporter, то TestReporterParameterResolver предоставляет экземпляр TestReporterTestReporter — это функциональный интерфейс, и поэтому может использоваться как цель присваивания для лямбда-выражения или ссылки метода. Паратметры типа TestReporter можно внедрить в методы тестовых классов, аннотированных как @BeforeEach, @AfterEach и @Test. TestReporter можно использовать для публикации дополнительных данных о выполнении текущего теста. В Примере 2 (Listing 2) показано, как использовать параметр TestReporter в качества аргумента аннотированных методов @Test.
  • listing_2
    В этом примере параметр TestReporter внедряется в три метода.

    В первом методе он используется для публикации единственного вводимого значения (1).

    Во втором методе он используется для публикации пары ключ-значение (2).

    В третьем методе мы конструируем карту (3), затем вводим в нее две пары ключ-значение (4) и используем его для публикации сконструированный карты (5).

    Напомним, что встроенный TestReporterParameterResolver предоставляет экземпляр TestReporter, необходимый для публикаций записей. Результат выполнения этого теста показан ниже.

    test_result

  • RepetitionInfoParameterResolver. Если параметр метода в методе @RepeatedTest, @BeforeEach или @AfterEach имеет тип RepetitionInfo, то RepetitionInfoParameterResolver предоставляет экземпляр RepetitionInfo. В этом случае RepetitionInfo можно использовать для получения информации о текущем повторе и общем числе повторов для соответствующего @RepeatedTest. RepetitionInfoParameterResolver не регистрируется вне контекста @RepeatedTest. О повторяющихся тестах мы более подробно поговорим в следующем разделе и приведем соответствующие примеры.

Автор Catalin Tudose, Java and Web Technologies Expert

Продолжение статьи по ссылке

Последние статьи в блоге

Выгодный май — на курсы залетай!

Друзья, спешим поделиться отличной новостью — вы можете получить скидки до 40% на наши популярные курсы. Это отличная возможность улучшить навыки и инвестировать в профессиональное развитие по более выгодной цене. Выбирайте направление и подавайте заявку прямо сейчас!

05 мая 2025

Кейс: кастомизация курса по Jira

Кейс по проведению кастомизированного курса «Основы Jira» для крупной российской компании, занимающейся производством цифровой техники.

05 мая 2025

Зачем специалистам по 1С изучать системный анализ и архитектуру ПО

Как системный анализ и архитектура ПО помогают эффективнее работать в 1С.

29 апреля 2025

Банка Nutella, IT, ESG — что общего?

Когда вы читали этикетку на продукте не из-за состава, а из-за ESG-маркировки?

25 апреля 2025

Каковы плюсы и минусы монолитной и микросервисной архитектуры при разработке ИТ-продуктов?

Монолитная и микросервисная архитектуры представляют собой два различных подхода к разработке ИТ-продуктов, каждый из которых имеет свои преимущества и недостатки.

25 апреля 2025

Станьте архитектором ПО с выгодой! Только в апреле сэкономьте 20 000 ₽ и получите новый модуль по микросервисам в подарок

24 апреля стартует обучение на комплексной программе «Архитектор ПО. Путь к мастерству в проектировании систем»*.

14 апреля 2025

Архитектурные ошибки в корпоративных системах, которые могут создать проблемы в долгосрочной перспективе

В основе любой информационной системы — сложная структура. Спроектировать ее не легче, чем построить дом. Какие ошибки можно допустить при планировании ИТ-архитектуры, и в чем их основные причины? К чему они могут привести в долгосрочной перспективе и как этого избежать? Рассказывает Михаил Рощин, заместитель директора отделения управления проектами и архитектуры IBS.

Новости
10 апреля 2025

Кейс: Интенсив по управлению проектами для промышленной компании

Мы адаптировали курс по управлению проектами под запрос команды крупной промышленной компании и провели обучение. Вот что из этого вышло.

27 марта 2025

Кейс: Обучение сотрудников крупной компании работе с ClickHouse

Рассказываем, как мы организовали обучение команды работе с этой новой для заказчика технологией и каких результатов достигли.

19 марта 2025

Платформа сертификации IBS получила аккредитацию АПКИТ

Ассоциация предприятий компьютерных и информационных технологий (АПКИТ) приняла новый регламент сертификации ИТ-специалистов.

Новости
10 марта 2025

Специальные акции на учебные программы

У нас отличная новость для всех, кто стремится развивать свои навыки в мире ИТ.

06 марта 2025

Как остановить спам-атаку

Современный цифровой мир не обходится без рисков, и спам-атаки стали одной из наиболее распространенных угроз. Независимо от того, поступают ли они на ваш телефон, электронную почту или мессенджеры, массовые потоки таких сообщений могут быть крайне раздражающими и даже опасными. Спамеры используют эти атаки не только для рекламы, но и для мошенничества, фишинга или распространения вредоносных ссылок.

06 марта 2025

Учебный центр IBS подписал партнерское соглашение с ООО «РусБИТех-Астра», разработчиком российской операционной системы Astra Linux.

Теперь мы можем проводить авторизованное обучение по работе с Astra Linux для специалистов в области информационной безопасности.

17 февраля 2025

Двойная выгода: покупай один курс — получай второй за 50% стоимости!

Воспользуйтесь возможностью изучить более глубокие аспекты одной области — например, при покупке курса по Java, архитектуре ПО, управлению проектами, системному и бизнес-анализу, тестированию ПО и Big Data вы можете получить второй курс этой же тематики за полцены! Не упустите шанс развить свои навыки и поднять свою карьеру на новый уровень. 

29 января 2025

Сертификация преподавателя Java-разработки для крупного провайдера ИТ-обучения

Подтверждение квалификации значимо не только для ИТ-специалистов, работающих в сфере коммерческой разработки, но и для преподавателей, обучающих будущих экспертов в этой области. Делимся историей одного из преподавателей крупного провайдера ИТ-курсов, который успешно прошел Java-сертификацию.

Новости
21 января 2025

Системный аналитик 100 lvl — дорожная карта развития

Все, что нужно знать для роста в профессии: какие блоки знаний проседают у системных аналитиков больше всего, на какие компетенции важно обратить внимание, чтобы двигать карьеру дальше, и как подтвердить соответствие своего уровня единому стандарту качества.

23 декабря 2024

Платформа сертификации IBS признана лучшим digital-решением для корпоративного обучения

Центр сертификации IBS стал обладателем Гран-при премии «Смарт пирамида» — одной из самых престижных российских премий за достижения в области обучения и развития человеческого капитала.

20 декабря 2024

Учебный центр IBS получил сертификат ГОСТ Р ИСО 9001-2015

В октябре 2024 года Учебный центр IBS получил сертификат соответствия ГОСТ Р ИСО 9001-2015. Это важное достижение подтверждает, что мы придерживаемся высоких стандартов качества и результативно управляем образовательными процессами организации.

19 декабря 2024

9 курсов со скидкой до 50%

Друзья, в январе стартует 9 курсов, обучение на которых можно купить со скидкой до 50%*! 

15 декабря 2024

8 заблуждений про тестирование

Тестирование программного обеспечения окружено множеством заблуждений. Эти стереотипы нередко приводят к недопониманию его реальной роли и важности для успешного создания продуктов. Рассмотрим восемь самых распространенных мифов о тестировании и объясним, почему они не соответствуют действительности.

15 декабря 2024

Не нашли, что искали? — Просто напишите, и мы поможем

Корпоративное обучение Оценка персонала Сертификация О нас Стань тренером Блог
Пользователь только что записался на курс ""
Спасибо!
Форма отправлена успешно.