【问题标题】:Loading the same properties(yml) files in testing enviornment?在测试环境中加载相同的属性(yaml)文件?
【发布时间】: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


    【解决方案1】:

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

    它对我有用。也许您的 IDE 没有在保存时将更改复制到输出目录或其他什么(我听说 IntelliJ 用户必须打开该功能)?

    【讨论】:

    • 您能否进一步解释一下如何设置 Intelli 来支持这一点?谢谢!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-10-08
      • 1970-01-01
      • 2013-09-07
      • 2021-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-11
      • 1970-01-01
      相关资源
      最近更新 更多