java - 无法在标记为 @SpringBootTest 的组件测试中加载 @Configuration 类
问题描述
我正在测试一项功能并编写了一个 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。
解决方案
当您@SpringBootTest(classes = Application.class)
使用指定的 运行时class
,它会指示 Spring Boot 测试引擎仅加载定义的 bean,Application.java
这些 bean 应该(通常)是@Configuration
直接或间接使用注释注释的类。
如果您只想在测试中加载整个应用程序上下文,只需使用@SpringBootTest
不带任何属性。现在在这种情况下,它将扫描最多一个带有@SpringBootConfiguration
注释的包(它出现在带有注释的类上@SpringBootApplication
,然后将向下扫描包以加载配置类。
当然,您应该确保测试能够找到@SpringBootApplication
类,因为您应该将测试放在同一个包中或下面(当然,测试位于与主类所在的位置src/test/java
相反。src/main/java
推荐阅读
- reactjs - 我有一个包含多层嵌套数组的多维对象,我试图一次性映射所有这些对象,但不知道如何
- swift - autocorrectType 不能在 iOS 13 上使用 swift
- list - 使用 Vuetify 在 Vue.js 中创建列表 --> 错误:避免将 JavaScript 关键字用作“v-on”
- json - 转储 Json 对 bash 变量的响应
- wordpress - ACF 链接到 woocommerce 单页中的按钮
- flutter - 我如何实现这样的 BottomSheet 自定义?
- firebase - 如何减少对数据库的 GET 请求的等待 TTFB 时间?
- java - Springboot如何在Zuul微服务上验证token
- git - Git 不会删除忽略目录中的 git 存储库
- mysql - Mysql使用前几行查找项目数