2015-03-08 92 views
-2

我想弄清楚我是否可以在测试环境中加载相同的.yml属性文件,因为我真的加载了。在测试环境中加载相同的属性(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加载资源进行测试?

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

我的情况是,我已经面对的噩梦,当你有每enviornment 5个阳明属性文件中的src/main /资源,那么你有相应的从你的团队中的src /测试/资源阳明属性文件和某人5。100 %在某些时候会导致它们之间的差异,使得其他人长期流血。

所以无论如何,测试必须引用相同的配置文件,而不是在其自身的无效上下文中的丢失。

解决方法:尝试“重建”项目。

回答

1

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

它适合我。也许你的IDE没有在保存或其他东西上拷贝更改到输出目录(我听说IntelliJ用户必须开启该功能)?

+0

你能解释一下设置Intelli来支持这个吗?谢谢! – 2015-07-02 08:59:53

0

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