Spring Boot 2.1.0 имеет зависимости JUnit5, но как от них избавиться?

Я только что обновил свои проекты, чтобы использовать Spring Boot 2.1.0 (до версии 2.0.x), и у меня есть ПРЕДУПРЕЖДЕНИЯ при компиляции:

[WARNING] Cannot find annotation method 'value()' in type 'org.junit.jupiter.api.extension.ExtendWith': class file for org.junit.jupiter.api.extension.ExtendWith not found

Я могу добавить зависимость org.junit.jupiter / junit-jupiter-api, чтобы устранить предупреждение, но я считаю, что это «взлом».

Я не хочу видеть это предупреждение (тем более, что мои проекты обрабатывают предупреждения как ошибки), и я не хочу загрязнять свои проекты ненужными зависимостями.

Я использую Maven, но вижу, что у кого-то была такая же проблема с Gradle https://www.reddit.com/r/java/comments/9sogxf/spring_boot_210_released_now_with_java_11_support/


person razor    schedule 15.11.2018    source источник
comment
Можете ли вы добавить к вопросу файл POM?   -  person Boris    schedule 15.11.2018
comment
Вы используете maven / gradle / ...?   -  person T A    schedule 15.11.2018
comment
Maven, а я изменил только версию с весенней загрузкой. вы хотите увидеть «эффективный POM» или просто для проекта? (это будет сложно, так как версии управляются Spring и моим родительским POM)   -  person razor    schedule 15.11.2018
comment
у кого-то была такая же проблема (с использованием gradle), поэтому я предполагаю, что это не проблема gradle / maven reddit.com/r/java/comments/9sogxf/   -  person razor    schedule 15.11.2018
comment
Если вы обновляете свою версию Spring boot jar, я думаю, вам следует рассмотреть возможность обновления версий зависимостей там, где это необходимо для поддержания обратной совместимости. Это поможет в долгосрочной перспективе. mvnrepository.com/artifact/org.springframework.boot/ Spring-boot /   -  person Ankur Chrungoo    schedule 15.11.2018
comment
Вы пробовали исключить JUnit5 из своих зависимостей Spring Boot в своем pom?   -  person T A    schedule 15.11.2018
comment
Я пробовал несколько артефактов, но не знаю, какой именно. ну, я думаю, проблема в том, что Spring ожидает некоторых артефактов JUnit5 (Api one), но у меня нет НИКАКИХ артефактов junit в `` эффективном POM ''   -  person razor    schedule 15.11.2018
comment
Какую версию Java вы используете? Я видел это предупреждение только в старых версиях Java 8.   -  person Andy Wilkinson    schedule 15.11.2018
comment
openjdk 1.8.0._181   -  person razor    schedule 16.11.2018
comment
Проблема в том, что, например, аннотации @DataJpaTest или @SpringBootTest аннотируются @ExtendWith, который является частью JUnit 5, поэтому кажется, что вам нужно JUnit 5 API в пути к классам, даже если вы его не используете.   -  person DAN    schedule 06.12.2018


Ответы (2)


Если вы добавите в проект зависимость org.junit.jupiter:junit-jupiter-api, предупреждение исчезнет. Это не должно повредить, потому что это всего лишь jar API и только в тестовой области.

person DAN    schedule 07.12.2018

Если вы используете @SpringBootTest для установки classes=:

@SpringBootTest(classes = {
        MyAutoConfiguration.class,
        MyAutoConfigurationIntegrationTest.TestContextConfiguration.class
    })

ответ упоминается в его документация по API:

Аннотация, которая может быть указана для тестового класса, который запускает тесты на основе Spring Boot. Предоставляет следующие функции помимо обычной Spring TestContext Framework:

Использует SpringBootContextLoader в качестве ContextLoader по умолчанию, когда не определен конкретный @ContextConfiguration (loader = ...).

Автоматически ищет @SpringBootConfiguration, когда вложенная @Configuration не используется и явные классы не указаны.

Вы можете использовать _ 4_, который не зависит от @ExtendsWith Junit5:

@RunWith(SpringRunner.class)
@ContextConfiguration(loader = SpringBootContextLoader.class,
    classes = {
        MyAutoConfiguration.class,
        MyAutoConfigurationIntegrationTest.TestContextConfiguration.class
    })
person Alun    schedule 01.10.2019