java - 无法通过测试用例从 src/main/resources 访问文件

标签 java unit-testing junit

我在 src/main/resources 中有一个 file.dat

当我尝试测试通过 jar 文件加载此文件的类时,测试失败,因为它无法在路径中找到该文件(I/O 异常)。我通过测试得到的路径是:

/home/usr/workspace/project/target/test-classes/file.dat

但是 target/test-classes 中不存在这个文件,你知道吗?

最佳答案

来自 src/main/resources 的文件在主程序运行期间将在类路径上可用,而来自 src/main/resources 的文件src/test/resources 将在测试运行期间在类路径上可用。

检索驻留在类路径中的文件的一种方法是:

Object content = Thread.currentThread().getContextClassLoader().getResource("file.dat").getContent();

.. content 的类型取决于文件内容。您还可以将文件作为 InputStream 获取:

InputStream contentStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("file.dat");

关于java - 无法通过测试用例从 src/main/resources 访问文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18875635/

相关文章:

java - 带数组的 For 语句

java - 最适合存储日期和时间的 SQL 和 Java 数据类型

java - 如何在 TestNG 中动态更改 @Test 方法

java - 与单元测试 Controller 和服务方法的区别

java - Gradle环境下JUnit测试访问文件

java - 如果静态类被模拟出来,为什么 PowerMock 会尝试加载 server.xml 文件?

java - 单元测试时如何设置全局环境变量

java - Fasterxml Jackson 原始 boolean 序列化

java - Play 框架 - 在多个调用中保存对象状态

c# - it.isAny 和 it.is 在单元模拟测试中是什么