繁体   English   中英

在运行时更改@PropertySource值

[英]Change @PropertySource value in run time

当junit测试用例运行时,如何在运行时更改@PropertySource的值。 例如,

我要替换下面的值,

@PropertySource(value = "file:${app.deploy.env}/sample/mine.properties", ignoreResourceNotFound = true)

value = "classpath:sample/mine.properties"

在junit测试运行时。

如果您确实愿意,可以这样做,但我不建议您这样做。 您首先需要确定哪个PropertySource包含该值。 由于示例中具有该注释,因此PropertySource将添加到常规注释中,可能是第一个实例。

您可以将Environment注入到要进行此更改的托管Bean中,作为ConfigurableEnvironment然后通过取消调用环境中的getMutablePropertySources()来检索PropertySource

话说回来。 为什么? 如何更改应用程序的这种基本属性代表了应用程序将要发生的事情。 看来您正在使用Spring Runner,并且希望在不同的测试方法中使用不同的设置来启动您的应用。 如果那是您想要做的,不要使用运行器,而是自己管理上下文,这实际上并不难。

例如,以下是与JMS相关的测试 ,这些测试更改了Environment以测试各种场景。 您可以使用一组特定的键轻松加载上下文,并且@After方法确保关闭每个测试的上下文

我们在Spring Boot中大量使用了这种模式。 事实上,我有一个JUnit规则可以使我的待办事项清单上的所有内容方便使用几个月。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM