gpt4 book ai didi

java - Spring 配置文件和测试

转载 作者:IT老高 更新时间:2023-10-28 13:04:16 24 4
gpt4 key购买 nike

我有一个 Web 应用程序,其中存在一个典型问题,即它需要针对不同环境使用不同的配置文件。一些配置作为 JNDI 数据源放置在应用服务器中,但是一些配置保留在属性文件中。

因此我想使用 Spring 配置文件功能。

我的问题是我没有让测试用例运行。

context.xml:

<context:property-placeholder 
location="classpath:META-INF/spring/config_${spring.profiles.active}.properties"/>

测试:

@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners({
TestPreperationExecutionListener.class
})
@Transactional
@ActiveProfiles(profiles = "localtest")
@ContextConfiguration(locations = {
"classpath:context.xml" })
public class TestContext {

@Test
public void testContext(){

}
}

问题似乎是加载配置文件的变量没有解决:

Caused by: java.io.FileNotFoundException: class path resource [META-INF/spring/config_${spring.profiles.active}.properties] cannot be opened because it does not exist
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:157)
at org.springframework.core.io.support.PropertiesLoaderSupport.loadProperties(PropertiesLoaderSupport.java:181)
at org.springframework.core.io.support.PropertiesLoaderSupport.mergeProperties(PropertiesLoaderSupport.java:161)
at org.springframework.context.support.PropertySourcesPlaceholderConfigurer.postProcessBeanFactory(PropertySourcesPlaceholderConfigurer.java:138)
... 31 more

应使用 @ActiveProfile 注释设置当前配置文件。由于这是一个测试用例,我将无法使用 web.xml。如果可能的话,我也想避免运行时选项。测试应按原样运行(如果可能)。

如何正确激活配置文件?是否可以使用 context.xml 设置配置文件?我可以在实际调用正常上下文的 test-context.xml 中声明变量吗?

最佳答案

我可以推荐这样做吗,像这样定义你的测试:

@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners({
TestPreperationExecutionListener.class
})
@Transactional
@ActiveProfiles(profiles = "localtest")
@ContextConfiguration
public class TestContext {

@Test
public void testContext(){

}

@Configuration
@PropertySource("classpath:/myprops.properties")
@ImportResource({"classpath:context.xml" })
public static class MyContextConfiguration{

}
}

在 myprops.properties 文件中包含以下内容:

spring.profiles.active=localtest

有了这个你的第二个属性文件应该得到解决:

META-INF/spring/config_${spring.profiles.active}.properties

关于java - Spring 配置文件和测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13364112/

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