Введение

JUnit — это фреймворк для автоматизированного тестирования языка программирования Java. JUnit часто используется для модульного тестирования и является одним из фреймворков семейства xUnit. JUnit подключается как JAR-файл во время компиляции. Последняя версия фреймворка, JUnit 5, находится в пакете. Предыдущие версии, JUnit 4 и JUnit 3, находились в пакетах и соответственно. Исследование, проведенное в 2013 году среди 10 000 Java-проектов, размещенных на GitHub, показало, что JUnit (наряду с API slf4j) была наиболее часто используемой внешней библиотекой. Каждая библиотека использовалась в 30,7% проектов.

Жизненный цикл JUnit

Каждый класс JUnit обычно содержит несколько тестовых методов. Эти методы подчиняются жизненному циклу тестирования. Полный жизненный цикл JUnit состоит из трех основных фаз:
Фаза подготовки. На этой фазе подготавливается тестовая инфраструктура. Доступны два уровня подготовки. Первый тип – подготовка на уровне класса, при которой создается и повторно используется ресурсоемкий объект, например, соединение с базой данных, с минимальными побочными эффектами. Подготовка на уровне класса реализуется с использованием аннотации. Другой тип – подготовка перед выполнением каждого тестового метода, для чего используется аннотация.
Фаза выполнения. Эта фаза отвечает за выполнение теста и проверку результата. Результат теста указывает на успешное или неудачное выполнение. Здесь используется аннотация.
Фаза завершения. После выполнения всех тестов системе может потребоваться очистка. Аналогично подготовке на уровне класса, существует и соответствующая очистка на уровне класса. Аннотация используется для поддержки очистки на уровне класса. Аннотация позволяет выполнить очистку после выполнения теста.

Интеграция с другими инструментами

JUnit 5 интегрируется с множеством инструментов, включая инструменты сборки, интегрированные среды разработки (IDE), системы непрерывной интеграции (CI) и многое другое.

Создать инструменты

JUnit поддерживает инструменты сборки Apache Ant, Apache Maven и Gradle, которые являются наиболее распространенными инструментами для сборки проектов. Инструменты сборки необходимы для автоматизации процесса создания проекта.

Расширение муравьев

Apache Ant, также известный как Ant, является одним из наиболее универсальных инструментов сборки и обладает самой долгой историей среди трех инструментов, перечисленных выше. Ant ориентирован на файл build.xml, который используется для настройки задач, необходимых для сборки проекта. У Ant также есть расширение Apache Ivy, помогающее решать задачи управления зависимостями. Зависимости проекта можно объявить в файле ivy.xml. Ant может интегрироваться с JUnit 5 путем настройки инструментов покрытия кода Java (JaCoCo) в файле ivy.xml. Затем файл ivy.xml можно настроить, добавив зависимости от консоли платформы Java и запуска JUnit Platform, для интеграции с JUnit 5.

Расширение Мавена

В отличие от Ant, Apache Maven, также известный как Maven, использует стандартизированный и унифицированный подход к процессу сборки. Maven следует парадигме "соглашения важнее конфигурации" для управления зависимостями. Исходный код Java (или "src") можно найти в каталоге src/main/java, а тестовые файлы – в каталоге src/test/java. Maven можно использовать для любого Java-проекта. Он использует объектную модель проекта (Project Object Model, POM), представляющую собой подход на основе XML для настройки этапов сборки проекта. Минимальная конфигурация Maven с файлом pom.xml должна содержать список зависимостей и уникальный идентификатор проекта. Maven должен быть доступен в среде сборки для работы. Maven может интегрироваться с JUnit 5 с помощью плагина jacoco-maven-plugin, который обеспечивает поддержку JUnit 5 "из коробки". Для выполнения этих задач можно указать различные цели Maven.

Расширение по уровню

Gradle — это инструмент для сборки, который заимствует многие концепции у своих предшественников, Ant и Maven. Он использует файл для объявления шагов, необходимых для сборки проекта. В отличие от Ant и Maven, основанных на XML, Gradle требует использования Apache Groovy — языка программирования на основе Java. Gradle, в отличие от Ant и Maven, не требует использования XML. Gradle по-прежнему следует принципу "соглашения важнее конфигурации", как и Maven, и использует ту же структуру для каталогов `src` и `test`. Gradle может интегрироваться с JUnit 5, настроив плагин вместе с плагином платформы JUnit, предоставленным командой JUnit 5, в файле сборки.