使用Spring从测试/资源中加载资源/文件

时间:2020-05-12 08:50:50

标签: java spring spring-boot maven spring-boot-test

是否可以使用@Value从Maven的test / resources目录中加载文件/资源​​?

例如像这样的东西:

@Value("${test/resources/path/to/file}") File file 

编辑:

我尝试过:

@Value("${someFile}") FileSystemResource file;

但是在运行时,我看到它代表工作目录,而不是测试/资源中的文件

2 个答案:

答案 0 :(得分:1)

测试/资源中的任何内容都将在测试阶段之前复制到目标/测试类。这些复制的资源将在类路径上可用。

如果您在测试类中启动Spring Configuration,则将为类路径资源提供一个绑定,使您可以像这样注入它们:

   @Value("classpath:path/to/file")
   Resource resourceFile;

不需要文件,因为它也可能来自类路径上的jar文件,但是您可以通过InputStream等读取它。

答案 1 :(得分:0)

不确定是否有直接方法可以执行此操作。

这是我们用来通过构造函数初始化它的另一种方法:

@RestController
public class FileController {

    private File file;

    public FileController(@Value("${file-name}") String filename) {
        file = new File(filename);
    }

}