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



因此,如果您有一个测试类

class FooControllerIT{
@Autowired FooController controller;
}

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

无法自动连线。找不到"FooController"类型的bean。

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

如果我用@Component注释替换@SpringBootTest注释,那么"错误"就会消失(当我再次替换@SpringBootTest注释时,"错误"会再次出现(。

是什么导致了这种行为?

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

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

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

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

最新更新