gpt4 book ai didi

java - 在 Spring 应用程序中使用 application.properties

转载 作者:行者123 更新时间:2023-11-30 06:19:26 25 4
gpt4 key购买 nike

我试图从 application.properties 中获取一些配置,然后在单元测试中覆盖它。但是,单元测试始终将 schemaPath 属性设置为 null .

这就是我所拥有的:

Service :

@Service
public class XmlValidator {

@Value("${schema.location}")
private String schemaPath;

public void validateXml(String fileName) {
String schemaPath = null;
if (fileName.contains("Reference")) {
schemaPath = schemaPath;
}
}
}

application.properties 和 application-test.properties:

schema.location = /schema/Schema_Reference_0.1.xsd

单元测试:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = XmlValidator.class)
@TestPropertySource(locations="classpath:config/application-test.properties")
public class XmlValidatorTest {

private XmlValidator validator = new XmlValidator();

@Test
public void testSchema() throws Exception {
validator.validateXml("resources/xmlFile.xml");
}
}

最佳答案

编辑

您的问题似乎很容易解决,而且可能与配置文件没有任何关系。检查以下行

private XmlValidator validator = new XmlValidator();

当您通过调用构造函数创建对象时,这不会让 Spring Autowiring spring bean。应该按如下方式完成

@Autowired
private XmlValidator validator;

这将让 Spring 发挥它的魔力,您将获得一个注入(inject)的 bean。

个人资料相关问题

application-test.properties 仅当 test 配置文件处于 Activity 状态时才会被选取。

测试开始时检查日志中打印的 Activity 配置文件。它应该显示如下内容

The following profiles are active: test,dev,local

其中 test、dev、local 是您的 Spring 应用程序使用的配置文件。如果这些配置文件处于 Activity 状态,则 spring 将拾取以下属性文件。

application-test.properties
application-dev.properties
application-local.properties
#Similarly *.yml files

#Following are unconditional
bootstrap.properties
application.properties

查看此文档

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-profile-specific-properties

将此测试相关属性放入 src/test/resources/application.properties 中(不带配置文件后缀)可能会更容易。如果您确实需要配置文件test,那么您必须使用环境变量或使用以下属性修改application.properties文件来激活它

spring.profiles.include=test
or
spring.profiles.active=test

关于java - 在 Spring 应用程序中使用 application.properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48504051/

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