Spring Boot 2.0.3.RELEASE
具有多个属性文件来处理.. application.properties和application-DEV.properties
在Junit测试中使用注释@TestPropertySource只能读取一个文件:
@TestPropertySource("file:C:\\Users\\user\\eclipse-workspace\\one2one_httpCall\\src\\main\\resources\\application-DEV.properties")
按预期工作
但是我需要两个属性文件,但我确实看到了locations选项,但是没有看到一个以上文件的示例..尝试了不同的选项,但没有一个起作用:
@TestPropertySource(locations = "classpath:application-DEV.properties;classpath:application.properties")
尝试了几种我不发布的方法,甚至尝试使用@TestPropertySource两次,但错误提示您不能两次使用。
使用@PropertySource进行了尝试,因为您可以使用它两次,但是由于这是一次Junit测试,因此无法使用。看着关于stacktrace和其他问题的一堆问题,尝试过但没有运气。
所以我的问题是如何通过@TestPropertySource批注使用两个属性文件?
答案 0 :(得分:3)
如果查看@TestPropertySource
的定义,您将看到locations
的类型为String []
。因此,如果需要传递多个值,则必须使用数组:
@TestPropertySource(locations = { "classpath:application.properties", "classpath:application-DEV.properties" })
此外,请注意声明属性文件的顺序。如TestPropertySource docs中所述:
每个位置都将作为其自身的属性源添加到封闭的环境中,按照声明的顺序 。
因此,您可能希望在之后声明DEV属性,以避免被生产属性覆盖。