首页 > 解决方案 > 添加 `@SpringBootTest` 注释会触发 IntelliJ 误报

问题描述

所以如果你有一个测试类

class FooControllerIT{
    @Autowired FooController controller;
}

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

无法自动接线。找不到 'FooController' 类型的 bean。

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

如果我用注释替换@SpringBootTest注释@Component,“错误”就会消失(当我再次替换@SpringBootTest注释时会重新出现)。

是什么导致了这种行为?

(我在终极 2019.1,使用 Spring Boot 2.1.8-RELEASE)

标签: javaspringspring-bootintellij-idea

解决方案


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

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

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


推荐阅读