我正在测试一个功能并编写了一个 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。
答案 0 :(得分:0)
当您使用指定的 @SpringBootTest(classes = Application.class)
运行 class
时,它会指示 Spring Boot 测试引擎仅加载 Application.java
中定义的 bean,该 bean 应该(通常)是一个注释为@Configuration
直接或间接注释。
如果您只想在测试中加载整个应用程序上下文,只需使用不带任何属性的 @SpringBootTest
。现在在这种情况下,它将扫描最多一个带有 @SpringBootConfiguration
注释的包(它出现在用 @SpringBootApplication
注释的类上,然后向下扫描包以加载配置类。
当然你应该确保测试能够找到 @SpringBootApplication
类,为此你应该把测试放在同一个包中或下面(当然测试在 src/test/java
中作为与您的主要班级所在的 src/main/java
相对。