我正在试图弄清楚我是否可以在测试环境中加载相同的.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上下文中丢失。
解决方案:尝试重建"该项目。答案 0 :(得分:1)
有没有办法从src / main / resources加载资源进行测试?
它对我有用。也许你的IDE没有在保存或其他东西上复制输出目录(我听说IntelliJ用户必须打开该功能)?
答案 1 :(得分:0)
我遇到了和你一样的问题,但我发现这是我在intellij中的运行配置中的一个类路径问题,当它设置为它应该是它作为一个魅力加载application.yml从主/资源。