java - 添加 `@SpringBootTest` 注释会触发 IntelliJ 误报

标签 java spring spring-boot intellij-idea

所以如果你有一个测试类

class FooControllerIT{
    @Autowired FooController controller;
}

并且您向该类添加一个 @SpringBootTest 注释,IntelliJ 声称

Could not autowire. No beans of 'FooController' type found.

这是一个谎言,因为测试运行并通过得很好。

如果我用 @Component 注释替换 @SpringBootTest 注释,“错误”就会消失(当我替换 @SpringBootTest 注释再次返回)。

什么原因导致这种行为?

(我使用的是旗舰版 2019.1,使用 Spring Boot 2.1.8-RELEASE)

最佳答案

找不到您的 Controller 的可能原因是它与注释为 @SpringBootApplication 的主应用程序类不在同一(或更高)包中。如果不想移动Controller,可以新建一个配置类,注释为@ComponentScan

@Configuration
@ComponentScan(basePackages = "com.your.controller.package")
public class FooConfig {
}

即使您可以手动将此配置添加到测试 spring 上下文中:@SpringBootTest(classes = FooConfig.class)

关于java - 添加 `@SpringBootTest` 注释会触发 IntelliJ 误报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58833053/

相关文章:

java - Flying Saucer XHTML 中的相对路径?

java - 可选的 Spring 分页

java - 注入(inject)依赖失败

spring - 如何使用 Spring Boot 运行 FlyWay clean?

spring-boot - 如何使用 spring-session 和 spring-security-oauth 保护相同的资源

java - 用于指定调用哪个函数的字符串输入 [Java] [最佳实践]

java - 将 pdf 文档合并到单页 iText 中

java - jmh:同时运行基准测试

java - Spring Batch 使用@JobScope 中的步骤定义基于 java 的条件流

java - tomcat jdbc和spring版本兼容性