我正在测试一个功能,并编写了一个componentTest来确保组件正常工作。问题是在运行test @Configuration类时没有为测试加载。示例:
TestClass:
@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。
发布于 2021-06-02 15:38:26
当您使用指定的class运行@SpringBootTest(classes = Application.class)时,它会指示spring boot测试引擎只加载在Application.java中定义的bean,这个bean(通常)应该是一个直接或间接使用@Configuration注释注释的类。
如果您只想在测试中加载整个应用程序上下文,那么只需使用不带任何属性的@SpringBootTest。现在,在这种情况下,它将扫描最多一个带有@SpringBootConfiguration注释的包(该注释出现在用@SpringBootApplication注释的类上),然后向下扫描这些包以加载配置类。
当然,您应该确保测试能够找到@SpringBootApplication类,因此您应该将测试放在相同的包或下面(当然,测试位于src/test/java中,而不是您的主类所在的src/main/java中。
https://stackoverflow.com/questions/67800209
复制相似问题