Это вторая часть нашей серии статей об архитектуре JUnit 5. Здесь мы поговорим о модулях JUnit 5 Jupiter и JUnit 5 Vintage, а также о других вещах.
3. JUnit 5 Jupiter
Модуль JUnit Jupiter представляет собой сочетание новой модели программирования (аннотации, классы, методы) и модели расширения для написания тестов и расширений в JUnit 5. Подпроект Jupiter предоставляет TestEngine для выполнения на этой платформе тестов на основе Jupiter. В отличие от прежних средств запуска и точек расширения правил в JUnit 4, модель расширений в JUnit Jupiter основана на единой концепции — Extension API.
В JUnit Jupiter имеются следующие артефакты:
-
junit-jupiter-api — JUnit Jupiter API для написания тестов и расширений;
-
junit-jupiter-engine — реализация тестовой среды JUnit Jupiter, которая необходима только во время выполнения;
-
junit-jupiter-params обеспечивает поддержку для параметризованных тестов в JUnit Jupiter;
-
junit-jupiter-migrationsupport обеспечивает поддержку миграции с JUnit 4 на JUnit Jupiter и требуется только для запуска выбранных правил JUnit 4.
4. JUnit 5 Vintage
Это полезная возможность для взаимодействия со старыми тестами через JUnit 5. Вполне вероятно, что вам понадобится работать с проектами в JUnit 5 с поддержкой многих старых тестов. В такой ситуации лучшим решением будет JUnit 5 Vintage!
5. Общая картина архитектуры JUnit 5
Чтобы свести все воедино и показать, как работает вся архитектура, отметим, что JUnit Platform предоставляет средства для выполнения самых разных тестов: JUnit 5, старых тестов JUnit 3 и 4, а также сторонних тестов (Рис. 2).
Рис. 2. Общая картина архитектуры JUnit 5.
Более подробно (Рис. 3):
-
Тестовые APIs обеспечивают средства для различных тестовых сред: junit-jupiter-api для тестов JUnit 5; junit-4.12 для старых тестов; настраиваемые среды для сторонних тестов.
-
Эти тестовые среды создаются за счет расширения общедоступного интерфейса junit-platform-engine API, который является частью JUnit 5 Platform.
-
Общедоступный интерфейс junit-platform-launcher API обеспечивает средства для обнаружения тестов в JUnit 5 Platform, для встроенных инструментальных средств, таких как Maven или Gradle, или для IDEs.
Рис. 3. Детальная картина архитектуры JUnit 5.
Помимо модульной архитектуры, JUnit 5 предоставляет механизм расширений.
Следует подчеркнуть, что архитектура системы в значительной степени определяет ее возможности и поведение. Понимание архитектуры JUnit 4 и JUnit 5 поможет вам лучше использовать их возможности на практике, писать более эффективные тесты и анализировать альтернативные возможности реализации. Они также помогут вам быстрее приобрести необходимые навыки программирования для написания модульных тестов.
Автор Catalin Tudose, Java and Web Technologies Expert
Продолжение