gpt4 book ai didi

Spring 启动应用程序-test.properties

转载 作者:行者123 更新时间:2023-12-04 02:51:08 25 4
gpt4 key购买 nike

我正在尝试使用 junit 对 spring-boot 应用程序进行单元测试。我已将 application-test.properties 放在 src/test/resources 下。我有一个读取 application.properties 的 ApplicationConfiguration 类。

我的测试课看起来像这样

@RunWith(SpringRunner.class)
@SpringBootTest(classes=ApplicationConfiguration.class)
@TestPropertySource(locations = "classpath:application-test.properties")
@ActiveProfiles("test")
public class TestBuilders {
@Autowired
private ApplicationConfiguration properties;

当我尝试读取属性时,它始终为空。

我的 ApplicationConfiguration 类看起来像这样
@Configuration
@ConfigurationProperties
@PropertySources({
@PropertySource("classpath:application.properties"),
@PropertySource(value="file:config.properties", ignoreResourceNotFound =
true)})
public class ApplicationConfiguration{
private xxxxx;
private yyyyy;

我尝试了我在谷歌上找到的所有可能的方法。没有运气。请帮忙!
提前致谢。

最佳答案

问题是你没有 @EnableConfigurationProperties在你的测试课上。
当您加载应用程序时,它从主类(具有 @SpringBootApplication 的类)开始,您可能拥有 @EnableConfigurationProperties因此它在您启动应用程序时起作用。
而当您仅使用 ApplicationConfiguration 运行测试时你在这里指定的类

@SpringBootTest(classes=ApplicationConfiguration.class)

Spring 不知道它必须启用配置属性,因此这些字段没有注入(inject),因此为空。但是 Spring 正在阅读您的 application-test.properties文件。这可以通过直接在测试类中注入(inject)值来确认
@Value("${xxxxx}")
private String xxxxx;

这里值被注入(inject)。但是用 ConfigurationProperties 注入(inject)到一个类中您需要使用 @EnableConfigurationProperties 启用它

@EnableConfigurationProperties在您的测试课上,一切正常。

关于 Spring 启动应用程序-test.properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48111941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com