当junit测试用例运行时,我如何在运行时更改@PropertySource的值?例如
我想替换下面的值,
@PropertySource(value = "file:${app.deploy.env}/sample/mine.properties", ignoreResourceNotFound = true)
value = "classpath:sample/mine.properties"
如果你真的想这样做,你可以这样做,但我不建议你这样做。首先需要找出哪个PropertySource
包含该值。由于在示例中有该注释,因此将在常规注释中添加PropertySource
,可能作为第一个实例。
您可以将Environment
注入到一个托管bean中,在那里您希望将其作为ConfigurableEnvironment
进行更改,并通过在环境中调用getMutablePropertySources()
来检索PropertySource
。
说了这么多。为什么?如何改变你的应用程序的基本属性代表了你的应用程序中将要发生的事情。看起来你正在使用Spring runner,你想在不同的测试方法中使用不同的设置启动你的应用程序。如果这就是你想要做的,不要使用运行器,而是自己管理上下文,这真的没有那么难。
例如,以下是更改Environment
以测试各种场景的jms相关测试。您可以使用一组特定的键轻松地加载上下文,并且@After
方法确保在每次测试时关闭上下文。
我们在Spring Boot中大量使用这个模式。事实上,我有一个JUnit规则,它使我几个月来的待办事项清单上的所有事情都变得方便。