当junit测试用例运行时,如何在运行时更改@PropertySource的值。例如,
我想替换下面的值,
@PropertySource(value = "file:${app.deploy.env}/sample/mine.properties", ignoreResourceNotFound = true)
与
value = "classpath:sample/mine.properties"
当junit测试运行时。
答案 0 :(得分:2)
如果你真的想要,你可以这样做,但我不建议你这样做。首先需要确定哪个PropertySource
包含该值。由于您的示例中包含该注释,因此PropertySource
将添加到常规注释中,可能作为第一个实例。
您可以将Environment
注入要在ConfigurableEnvironment
进行更改的托管bean中,并通过在环境中调用PropertySource
来检索getMutablePropertySources()
说完了。为什么?如何更改应用程序的这些基本属性代表您的应用程序将会发生什么。看起来您正在使用Spring runner,并且您希望在不同的测试方法中使用不同的设置启动您的应用程序。如果这就是你想要做的事情,不要使用跑步者,而是自己管理上下文,这真的不是那么难。
例如,这里有JMS-related tests更改Environment
以测试各种方案。您可以easily load the context with a specific set of keys和@After
method makes sure to shutdown the context for each test。
我们在Spring Boot中使用了这种模式。事实上,我有一个JUnit规则,可以在我的待办事项清单上提供几个月的所有内容。