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