В ноябре 2015 года команда JUnit Lambda представила свой прототип . С тех пор проект переименовал себя в JUnit 5 и выпустил альфа-версию в феврале 2016 года. Мы рассмотрим его в серии коротких публикаций:
- Настроить
- основы
- Архитектура
- условия
- впрыскивание
- …
В этом разделе обсуждается настройка JUnit 5, чтобы вы могли писать код для нового API и запускать тесты в вашей IDE или с помощью инструмента сборки.
обзор
Большая часть того, что вы прочтете здесь, и многое другое можно найти в новом руководстве пользователя JUnit 5 . Обратите внимание, что он основан на альфа-версии и, следовательно, может быть изменен.
В самом деле, мы поощряем открывать проблемы или извлекать запросы, чтобы JUnit 5 мог улучшаться дальше. Пожалуйста, используйте эту возможность! Это наш шанс помочь JUnit помочь нам.
Этот пост будет обновляться по мере необходимости. Примеры кода, которые я здесь показываю, можно найти на Github .
Письменные тесты
API для написания тестов содержится в артефакте junit5-api. Включение его в ваш проект с вашим любимым инструментом сборки — все, что нужно для написания тестов.
- Идентификатор группы : org.junit5
- ID артефакта : junit5-api
- Версия : 5.0.0-АЛЬФА
Чтобы было над чем поработать, давайте быстро создадим наш первый тест :
HelloWorldTest.java
01
02
03
04
05
06
07
08
09
10
11
12
|
package org.codefx.demo.junit5; import org.junit.gen5.api.Test; class HelloWorldTest { @Test void helloJUnit5() { System.out.println( "Hello, JUnit 5." ); } } |
Смотри, ма, нет публики! Круто, верно? Я не буду вдаваться в подробности, но в следующем посте мы обсудим это (и другие основы), так что следите за обновлениями.
Запуск тестов
Благодаря тому, что JUnit 5 является передовой, отсутствует встроенная поддержка инструментов. Но есть предварительные условия, чтобы все заработало.
JUnit 4 Runner
Тестовый запуск под названием JUnit5 можно использовать для запуска новых тестов в рамках запуска JUnit 4. Вы найдете его в собственном артефакте, который вы должны добавить в свой проект:
- Идентификатор группы : org.junit5
- Идентификатор артефакта : junit4-runner
- Версия : 5.0.0-АЛЬФА
Бегун вызовет двигатель, который фактически запускает тесты JUnit 5. Движок также имеет свой собственный артефакт, который вы должны добавить:
- Идентификатор группы : org.junit5
- Идентификатор артефакта : junit5-engine
- Версия : 5.0.0-АЛЬФА
Чтобы запустить все тесты в проекте, проще всего создать для них набор тестов:
1
2
3
4
5
6
7
8
9
|
package org.codefx.demo.junit5; import org.junit.gen5.junit4.runner.JUnit5; import org.junit.gen5.junit4.runner.Packages; import org.junit.runner.RunWith; @RunWith (JUnit5. class ) @Packages ({ "org.codefx.demo.junit5" }) public class TestWithJUnit5 { } |
Обратите внимание, что класс должен быть обычным тестовым классом JUnit 4, то есть он должен соответствовать общему соглашению об именах и должен быть общедоступным. @ Packages-annotation интерпретирует пакеты как иерархию, поэтому выполняет все тесты во всех пакетах с префиксом org.codefx.demo.junit5. При желании вы можете использовать тот же раннер непосредственно в тестовых классах JUnit 5; в этом случае они должны быть публичными.
Теперь мы закончили! Ваш любимый инструмент IDE и инструмент сборки будут с радостью запускать классы, помеченные @RunWith (JUnit5.class) и, следовательно, новые тесты JUnit 5.
Пока не появится настоящая поддержка JUnit 5, некоторые функции могут не работать, например, в IDE не будут выполняться отдельные методы тестирования. Но пока я обнаружил, что это самое простое и независимое от инструмента решение.
Поддержка инструментов сборки
Команда JUnit уже усердно работает над реализацией поддержки инструментов сборки для JUnit 5, то есть без обхода через JUnit 4. Начальный плагин Gradle и поставщик Maven Surefire уже работают и работают. Оба проекта планируется передать соответствующим сообществам в какой-то момент.
Для обоих есть примеры проектов ( Gradle , Maven ). Для более подробной информации обратитесь к руководству пользователя .
Командная строка для победы!
Если вам все это не по вкусу, попробуйте запустить консоль , которая позволит вам запускать тесты прямо из командной строки. Чтобы получить его, вы можете скачать этот ZIP .
К сожалению, это не работает из коробки . Мне пришлось выбросить упомянутые выше артефакты junit5-api и junit5-engine в lib и отредактировать определение пути к классу в скрипте в bin для CLASSPATH = $ APP_HOME / lib / *, чтобы оно работало.
Игнорируя дополнительные зависимости (например, от других тестовых библиотек), вы можете использовать его следующим образом:
Использование junit-консоли
1
2
3
4
5
6
|
# run all tests junit-console -p ${path_to_compiled_test_classes} -a # run a specific test junit-console -p ${path_to_compiled_test_classes} org.codefx.demo.junit5.HelloWorldTest |
Совместимость
Как вы могли заметить, JUnit 5 занимает новое пространство имен: org.junit.gen5. Это означает, что не будет конфликтов при использовании разных версий JUnit в одном проекте.
Действительно, проект может содержать и запускать тесты из разных версий без проблем, что позволяет выполнить медленный переход на JUnit 5. Мы вернемся к этой теме, когда будем изучать новую архитектуру JUnit.
Тестовые библиотеки, такие как Hamcrest и AssertJ, которые взаимодействуют с JUnit через исключения, продолжат работать в новой версии. Проверьте полную версию HelloWorldTest для примера, использующего Mockito и AssertJ.
отражение
Для нашей установки JUnit 5 мы включили junit5-api, junit5-engine и junit4-runner в наш проект, написали первый минимальный тестовый пример и выполнили его как часть набора тестов JUnit 4.
В следующем посте будут рассмотрены основы написания тестов в JUnit 5.
Ссылка: | JUnit 5 — Настройка от нашего партнера JCG Николая Парлога в блоге CodeFx . |