【发布时间】:2015-03-08 19:31:53
【问题描述】:
我想弄清楚我是否可以在测试环境中加载与实际加载相同的 .yml 属性文件。
例如我有一个测试:
\src\test\java\security\TokenTest.java
注释:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebAppConfiguration
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
@ActiveProfiles("dev")
那么我有:
\src\main\resources\application.yml
当我运行应用程序时,环境会从 yml 位置获取属性源。
每当我运行测试时,环境都看不到此文件 - 即未创建/填充属性源。
显而易见的解决方案是将重复文件放到测试位置:
\src\test\resources\application.yml
它会加载,但这很糟糕 - 在感知测试资源和主要资源之间的差异时会引起不必要的混淆。
如果每个环境都有配置文件,则前面的问题会得到增强。
有没有办法从 src/main/resources 加载资源进行测试?
这可能是一些我不知道的基本类路径扫描概念。
我的情况是,当您在 src/main/resources 中每个环境有 5 个 yml 属性文件,然后在 src/test/resources 中有 5 个相应的 yml 属性文件并且您团队中的某个人将 100 % 时,我已经面临噩梦在某些时候会引入它们之间的差异,从而使其他所有人长期流血。
所以无论如何测试都必须引用相同的配置文件,以免丢失在自己的无效上下文中。
解决方案:尝试“重建”项目。
【问题讨论】:
标签: java spring configuration yaml spring-boot