我试图在我的单元测试中像这样从类路径中读取一个文件:
@Value("classpath:state.json")
Resource stateFile;
我在 src/test/resources
目录中有 state.json
文件。当我尝试使用 stateFile.getInputStream()
读取此文件时,它没有返回任何内容。我究竟做错了什么?
我的测试类是这样注释的
@RunWith(SpringRunner.class)
@SpringBootTest
如果我尝试使用不正确的文件,我可以看到代码失败。所以我认为它在类路径中看到了文件,但由于某种原因没有读取内容。
原文由 Nithin Satheesan 发布,翻译遵循 CC BY-SA 4.0 许可协议
我刚遇到这个。我正在使用 Maven。我查看了我的 target/test-classes 文件夹,我的资源文件不在那里(即使它在我的 src/test/resources 文件夹中)。
我跑了
mvn clean install
然后重新检查了我的目标/测试类文件夹,资源文件现在在那里。在那之后,我的测试能够找到文件并且测试成功了。因此,在您执行
mvn clean
之前,您的资源似乎不会被复制。 JUnit 正在查找由 maven 构建的类路径,直到文件真正进入 target/test-classes 文件夹,JUnit 才能找到它。