Spring Boot 2.1.0具有JUnit5依赖性,但是如何摆脱它呢?

时间:2018-11-15 12:49:10

标签: java spring-boot spring-boot-test

我刚刚升级了项目以使用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/

2 个答案:

答案 0 :(得分:2)

如果将org.junit.jupiter:junit-jupiter-api依赖项添加到项目中,警告将消失。 它应该不会受到伤害,因为它只是API jar,而且仅在测试范围内。

答案 1 :(得分:1)

如果您使用@SpringBootTest来设置classes=

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

答案在其api documentation中被提及:

  

可以在运行Spring Boot的测试类上指定的注释   基础测试。除了提供以下功能外,还提供以下功能:   常规的Spring TestContext Framework:

     

在没有具体说明的情况下,使用SpringBootContextLoader作为默认的ContextLoader   定义了@ContextConfiguration(loader = ...)。

     

自动搜索   对于不使用嵌套@Configuration的@SpringBootConfiguration,   且未指定任何显式类。

您可以使用不依赖Junit5的@ExtendsWith的{​​{3}}:

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