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

时间:2019-11-13 08:31:13

标签: java spring spring-boot intellij-idea

所以,如果您有测试班

class FooControllerIT{
    @Autowired FooController controller;
}

,然后在类中添加@SpringBootTest批注,IntelliJ声称

  

无法自动接线。找不到“ FooController”类型的豆。

这是谎言,因为测试可以顺利通过并通过。

如果我将@SpringBootTest注释替换为@Component注释,则“错误”消失(并且当我再次替换@SpringBootTest注释时再次出现)。

什么原因导致这种行为?

(我在使用Spring Boot 2.1.8-RELEASE的Ultimate 2019.1中)

1 个答案:

答案 0 :(得分:0)

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

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

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