Ral*_*lph 5 java spring unit-testing properties
我有一个应用程序,其中使用属性占位符来读取属性,配置在applicationContext.xml:
...
<context:property-placeholder
location="classpath*:META-INF/spring/*.properties"/>
...
Run Code Online (Sandbox Code Playgroud)
应用程序在Tomcat中运行,并使用context.xml中定义的参数.应用程序像普通属性(@Value(${cfma.applicationUrl}))一样访问此参数.这有效
在我的测试用例中,我没有这个tomcat属性,所以我想将它们"手动"添加到应用程序上下文中.但也加载正常applicationContext.xml
testContext.xml:
<import resource="classpath:/META-INF/spring/applicationContext.xml" />
<context:property-placeholder properties-ref="simulatedTomcatProperties"/>
<util:properties id="simulatedTomcatProperties">
<prop key="cfmt.applicationBaseUrl">localhost:8080/cfmt</prop>
</util:properties>
Run Code Online (Sandbox Code Playgroud)
现在我有两个上下文:属性占位符,这不起作用(当然) - 所以我的问题是,我可以在测试中的"普通"属性占位符中扩展属性?
更多我需要的解释:
@Value(${cfma.applicationUrl})).而且一定不能有任何Fallback,如果Tomcat中没有定义属性,应用程序一定不能启动!context:property-placeholder他们没有合并:@参见https://jira.springsource.org/browse/SPR-4881上的评论- 他们解释了这种行为.
当我谈论Tomcat参数时,我正在谈论这样的一些想法:
context.xml中:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Parameter name="cfmt.applicationBaseUrl"
value="http://localhost/demoApp" override="false"/>
</Context>
Run Code Online (Sandbox Code Playgroud)
不确定这是否有帮助,但我在类似的情况下做的是有2个app.properties文件具有相同的名称,一个在sec/test/resources中,另一个在src/main/resources中.现在在测试期间第一个被加载,因为测试类首先在类路径上,但是当我部署时只有主要的那个在那里,所以它被加载.
| 归档时间: |
|
| 查看次数: |
29691 次 |
| 最近记录: |