使用@TestPropertySource正确定义测试属性的路径(Spring Boot 2)

时间:2019-07-08 10:36:50

标签: java spring spring-boot spring-test

我的Spring Boot 2测试文件夹中具有以下层次结构

 test/
      java/
           package.name/
                        SpringBootTest.java

       resources/
                 test.properties

SpringBootTest的代码类似

@RunWith (SpringRunner.class)
@TestPropertySource(locations = {"/resources/test.properties"})
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, 
             properties = {"management.port=0"})
public class SwaggerExtractorTest { ... } 

我还尝试将location = {“ test.properties”}与位于Java类本身以及其他路径旁边的文件一起使用,但这始终是错误 class路径资源[... ],因为它不存在而无法打开

理想情况下,我喜欢为@TestPropertySource提供路径,我可以将该路径放置在测试代码层次结构的不同级别上,而无需进行更改,即相对于某些顶级级别。

设置此路径的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

假设您所指的test/resources文件夹是Maven / Gradle版本使用的src/test/resources文件夹...

@TestPropertySource("/test.properties")@TestPropertySource("classpath:test.properties")是等效的,并且两者都可以在类路径的根目录中引用test.properties文件。

答案 1 :(得分:0)

这为我修好了。

确保您的测试资源文件夹已在源中设置。以下是 IntelliJ 的说明:

  1. 点击项目标签。
  2. 右键单击项目并选择“打开模块设置”
  3. 在项目设置下,选择“模块”
  4. 确保在源下列出您的测试资源文件夹。我的看起来像:

IntelliJ sources setup