我想知道@TestPropertySource
是否会尊重SpEL,或者至少会允许某个属性替换另一个属性的值。
与@TestPropertySource with dynamic properties
类似的问题假设我所指的属性存在于locations
属性中的一个文件中......
例如,如果我想做类似的事情:
@TestPropertySource(
locations = {"classpath:application.properties", "classpath:database.properties"},
properties = {"newPortNum = #{1 + Integer.parseInt(${myapp.web.server.port.ssl})}})
或者这个:
@TestPropertySource(
locations = {"classpath:application.properties", "classpath:database.properties"},
properties = {"outputFile = ${outputDir}/foo.txt"})
我是否需要实施TestExecutionListener
或@BootstrapWith
才能完成此任务?
答案 0 :(得分:3)
直接从Javadoc @TestPropertySource.locations()
:
路径中的属性占位符(即
${...}
)将根据Environment
进行解析。
......这意味着:针对已添加到Environment
的任何内容。
另一方面,不支持SpEL表达式。
如果您需要编程支持向PropertySource
添加Environment
,则应实施ApplicationContextInitializer
,可以通过@ContextConfiguration(initializers = ...)
注册。
此致
Sam (Spring TestContext Framework的作者)