无法在标记为 @SpringBootTest 的组件测试中加载 @Configuration 类

时间:2021-06-02 06:47:50

标签: java spring spring-boot spring-mvc spring-test

我正在测试一个功能并编写了一个 componentTest 以确保该组件正常工作。问题是运行测试时 @Configuration 类没有为测试加载。示例:

测试类:

@SpringBootTest(classes = Application.class)
public class ServiceTest{

//Do Something

}
@Configuration

public class ConfigurationClass{

@PostConstruct
public void doSomething(){
log.info("Test loading");
}

}

运行应用程序时,我可以看到应用程序启动时打印的日志。当我运行测试时,我没有看到从 ConfigurationClass 打印的日志。我尝试使用 @ContextConfiguration(classes=ConfigurationClass.class) 但没有成功。

实际上,我希望在加载测试之前加载 configurationClass。

1 个答案:

答案 0 :(得分:0)

当您使用指定的 @SpringBootTest(classes = Application.class) 运行 class 时,它会指示 Spring Boot 测试引擎仅加载 Application.java 中定义的 bean,该 bean 应该(通常)是一个注释为@Configuration 直接或间接注释。

如果您只想在测试中加载整个应用程序上下文,只需使用不带任何属性的 @SpringBootTest。现在在这种情况下,它将扫描最多一个带有 @SpringBootConfiguration 注释的包(它出现在用 @SpringBootApplication 注释的类上,然后向下扫描包以加载配置类。

当然你应该确保测试能够找到 @SpringBootApplication 类,为此你应该把测试放在同一个包中或下面(当然测试在 src/test/java 中作为与您的主要班级所在的 src/main/java 相对。