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

yas*_*eco 2 java spring maven spring-boot spring-boot-test

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

例如这样的东西:

@Value("${test/resources/path/to/file}") File file 
Run Code Online (Sandbox Code Playgroud)

编辑:

我试过这个:

@Value("${someFile}") FileSystemResource file;
Run Code Online (Sandbox Code Playgroud)

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

Gee*_*nte 5

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

如果您在测试类中启动 Spring 配置,则会有一个类路径资源的绑定,允许您像这样注入它们:

   @Value("classpath:path/to/file")
   Resource resourceFile;
Run Code Online (Sandbox Code Playgroud)

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