spring - Spring Boot JUnit 和 @TestPropertySource 使用多个属性文件
问题描述
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")
按预期工作
但是我需要两个属性文件,我确实看到了位置选项,但没有看到多个文件的示例.. 尝试了不同的选项,但没有一个起作用:
@TestPropertySource(locations = "classpath:application-DEV.properties;classpath:application.properties")
尝试了几种我没有发布的方法,甚至尝试使用 @TestPropertySource 两次但错误说你不能使用它两次。
尝试使用@PropertySource,因为你可以使用它两次,但由于这是一个 Junit 测试,所以它不起作用。看了一堆关于stacktrace +其他的问题并尝试了但没有运气。
所以我的问题是如何通过 @TestPropertySource 注释使用两个属性文件?
解决方案
如果您查看 的定义@TestPropertySource
,您会看到locations
是 类型String []
。因此,如果需要传递多个值,则必须使用数组:
@TestPropertySource(locations = { "classpath:application.properties", "classpath:application-DEV.properties" })
另外,请注意声明属性文件的顺序。如TestPropertySource 文档中所述:
每个位置都将按照声明的顺序作为其自己的属性源添加到封闭的环境中。
因此,您可能希望在之后声明您的 DEV 属性,以避免它们被您的生产属性覆盖。
推荐阅读
- java - 在不丢失 JPA 和 Jackson JSON 信息的情况下避免无限递归 (StackOverflowError)
- c++ - c++ Firebase 身份验证错误
- ios - 如何像这样使用 GPUImage 绘制草图边界或铅笔边界?
- css - 使用媒体查询修改 html 标签的字体大小
- python - 在 Linux EC2 实例中使用 sudo pip3 install python-binance 时 python-binance 无法编译错误
- excel - Excel 中 RIGHT 公式的结果不稳定
- jquery - jQuery: if XYZ, add class to this AND next element
- reactjs - enzyme wrappers fail jest equality despite producing identical snapshots
- c++ - 添加一个 op tensorflow 调试
- android - 无法调试 React Native android 应用程序 - 窗口类型 2006 的权限被拒绝