Разница между junit-jupiter-api и junit-jupiter-engine
В чем разница между модулями maven junit-jupiter-api
и junit-jupiter-engine
? Нужно ли включать обе зависимости в build.gradle
?
Нужно ли писать обе зависимости вроде
testCompile("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")
testCompile("org.junit.jupiter:junit-jupiter-api:${junitVersion}")
или
testCompile("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")
достаточно?
И мне нужно добавить зависимость от junit-vintage-engine
?
Ответы
Ответ 1
JUnit до версии 5.4
Из документов:
junit-jupiter-api
JUnit Jupiter API для написания тестов и расширений.
junit-jupiter-engine
Реализация движка JUnit Jupiter, требуется только во время выполнения.
junit-vintage-engine
Реализация механизма тестирования JUnit Vintage, позволяющая запускать старинные тесты JUnit, т.е. тесты, написанные в стиле JUnit 3 или JUnit 4, на новой платформе JUnit.
Итак...
- Для написания и запуска тестов JUnit5 вам нужны
junit-jupiter-api
и junit-jupiter-engine
- Вам понадобится
junit-vintage-engine
только в том случае, если (a) вы работаете с JUnit5 и (b) ваши тесты используют JUnit4 constructs/annotations/rules и т.д.
JUnit с версии 5.4 и выше
В JUnit 5.4 это упрощено, см. этот ответ для более подробной информации.
Ответ 2
Отметим, что junit-jupiter-api
включен в качестве подчиненной зависимости в junit-jupiter-engine
Maven. Так что вам нужно всего лишь добавить junit-jupiter-engine
чтобы получить и то, и другое. Я уверен, что Gradle это то же самое. https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine/5.1.1
Ответ 3
артефакт junit-jupiter
JUnit 5.4 предоставляет гораздо более простую конфигурацию Maven, если вы собираетесь писать тесты JUnit 5. Просто укажите совокупный артефакт с именем junit-jupiter
.
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.4.2</version>
<scope>test</scope>
</dependency>
Для вашего удобства этот совокупный артефакт автоматически извлекает следующие три артефакта:
В вашем проекте вы также получите:
- JUnit-платформенные-Обще-1.4.0.jar
- JUnit-платформа двигатель 1.4.0.jar
Вышесказанное - это то, что вам нужно для написания и запуска тестов JUnit 5 на основе новой парадигмы Jupiter.
Наследственные тесты
Если в вашем проекте есть тесты JUnit 3 или 4, которые вы хотите продолжать выполнять, добавьте еще одну зависимость для JUnit Vintage Engine, junit-vintage-engine
. Смотрите руководство от IBM.
<!-- https://mvnrepository.com/artifact/org.junit.vintage/junit-vintage-engine -->
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>5.4.2</version>
<scope>test</scope>
</dependency>
Ответ 4
Наиболее точный ответ на ваши вопросы находится в репозитории junit-team/junit5-samples. Просто взгляните на junit5-Юпитер-стартер- Gradle для Gradle и junit5-Юпитер-стартер- Maven для Maven.
Как вы можете видеть в обоих примерах, единственная необходимая зависимость - это junit-jupiter
.