在测试环境中加载相同的属性(yml)文件?

时间:2015-03-08 19:31:54

标签: java spring configuration yaml spring-boot

我正在试图弄清楚我是否可以在测试环境中加载相同的.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位置获取属性源。

每当我运行测试时,环境都看不到此文件 - 即未创建/填充property-source。

显而易见的解决方案是将重复文件放到测试位置:

\src\test\resources\application.yml

它会加载,但这很糟糕 - 在感知测试和主要资源之间的差异时会引起不必要的混淆。

如果每个环境都有配置文件,则此问题会得到增强。

有没有办法从src / main / resources加载资源进行测试?

这可能是一些基本的类路径扫描概念,我不知道。

我的情况是,当你在src / main / resources中每个环境有5个yml属性文件时,我已经遇到了噩梦,然后你在src / test / resources中有5个相应的yml属性文件,而你的团队中有人将100%在某些时候,他们之间会产生差异,使其他人长期流血。

因此,无论如何,测试必须引用相同的配置文件,而不是在其自己的void上下文中丢失。

解决方案:尝试重建"该项目。

2 个答案:

答案 0 :(得分:1)

  

有没有办法从src / main / resources加载资源进行测试?

它对我有用。也许你的IDE没有在保存或其他东西上复制输出目录(我听说IntelliJ用户必须打开该功能)?

答案 1 :(得分:0)

我遇到了和你一样的问题,但我发现这是我在intellij中的运行配置中的一个类路径问题,当它设置为它应该是它作为一个魅力加载application.yml从主/资源。