Введение
JUnit — это фреймворк для автоматизированного тестирования языка программирования Java. JUnit часто используется для модульного тестирования и является одним из фреймворков семейства xUnit. JUnit подключается как JAR-файл во время компиляции. Последняя версия фреймворка, JUnit 5, находится в пакете. Предыдущие версии, JUnit 4 и JUnit 3, находились в пакетах и соответственно. Исследование, проведенное в 2013 году среди 10 000 Java-проектов, размещенных на GitHub, показало, что JUnit (наряду с API slf4j) была наиболее часто используемой внешней библиотекой. Каждая библиотека использовалась в 30,7% проектов.
JUnit is a test automation framework for the Java programming language. JUnit is often used for unit testing, and is one of the xUnit frameworks. JUnit is linked as a JAR at compile time. The latest version of the framework, JUnit 5, resides under package Previous versions JUnit 4 and JUnit 3 were under packages and , respectively. A research survey performed in 2013 across 10,000 Java projects hosted on GitHub found that JUnit (in a tie with slf4j api) was the most commonly included external library. Each library was used by 30.7% of projects.
Жизненный цикл JUnit
Каждый класс JUnit обычно содержит несколько тестовых методов. Эти методы подчиняются жизненному циклу тестирования. Полный жизненный цикл JUnit состоит из трех основных фаз:
Фаза подготовки. На этой фазе подготавливается тестовая инфраструктура. Доступны два уровня подготовки. Первый тип – подготовка на уровне класса, при которой создается и повторно используется ресурсоемкий объект, например, соединение с базой данных, с минимальными побочными эффектами. Подготовка на уровне класса реализуется с использованием аннотации. Другой тип – подготовка перед выполнением каждого тестового метода, для чего используется аннотация.
Фаза выполнения. Эта фаза отвечает за выполнение теста и проверку результата. Результат теста указывает на успешное или неудачное выполнение. Здесь используется аннотация.
Фаза завершения. После выполнения всех тестов системе может потребоваться очистка. Аналогично подготовке на уровне класса, существует и соответствующая очистка на уровне класса. Аннотация используется для поддержки очистки на уровне класса. Аннотация позволяет выполнить очистку после выполнения теста.
Setup phase This phase is where the test infrastructure is prepared. Two levels of setup are available. The first type of setup is class level setup in which a computationally expensive object, such as a database connection, is created and reused, with minimal side effects. Class level setup is implemented using the annotation. The other type is setup before running each test case, which uses the annotation. Test execution This phase is responsible for running the test and verifying the result. The test result will indicate if the test result is a success or a failure. The annotation is used here. Clean up phase After all posttest executions are performed, the system may need to perform cleanup. Similar to class level setup, there is a corresponding class level clean up. The annotation is used to support class level clean up. The annotation allows for cleanup after test execution.
Интеграция с другими инструментами
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, в файле сборки.