Я использую спецификацию Gradle 5 (спецификация) функция .Вот как я описываю это для моих зависимостей JUnit 5:
testImplementation(enforcedPlatform("org.junit:junit-bom:5.4.0")) // JUnit 5 BOM
testImplementation("org.junit.jupiter:junit-jupiter-api")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
testImplementation("org.junit.jupiter:junit-jupiter-params")
Я предполагаю, что предоставление спецификации разрешит версии зависимостей до 5.4.0
.Однако они разрешаются до 5.1.1
.Я не уверен почему.(Я также прошу enforcedPlatform()
заблокировать указанную версию)
Проверка Спецификация JUnit 5 мы видим, что все org.junit.jupiter
зависимости перечислены с версией 5.4.0
(в проекте разрешено до 5.1.1), а все org.junit.platform
перечислены с версией 1.4.0
, которые правильно разрешены в проекте.
Я не уверен, чтоЯ скучаю и надеялся получить помощь здесь.Спасибо!
РЕДАКТИРОВАТЬ:
Я использовал ответ Sormuras и переместил все спецификации в верхнюю часть блока dependencies {}
, но все еще не получал версию 5.4.0
.Затем я подозревал, что это может быть связано с плагином Gradle Spring Dependency Management , который я использую, поэтому, когда я закомментировал его, я получил версию JUnit 5.4.0.Как отключить JUnit из плагина управления зависимостями Gradle Spring?
В завершение:
Iрешил использовать Spring Boot Dependencies BOM напрямую и удалить плагин Gradle:
implementation(platform("org.springframework.boot:spring-boot-dependencies:2.0.5.RELEASE"))
Я думаю, плагин был создан для этих версий Gradle до Gradle 5где вы не могли использовать файл спецификации.Теперь с поддержкой спецификации я могу напрямую включить ее.Таким образом, моя версия JUnit такая, как я указал ее в блоке enforcedPlatform()
.
Я принял ответ Сэма Браннена ниже, потому что он хорошо объясняет, как возникает проблема и что ее решает, и я думаю, что она актуальна для тех, ктокто использует более старые версии Gradle.