【发布时间】:2015-07-03 14:35:39
【问题描述】:
我正在使用 Maven 并在尝试使用以下方式读取文件的静态方法上运行 JUnit 测试:
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(filename);
然后使用new InputStreamReader(is) 在另一个调用中用作阅读器。当filename 只是一个文件名(例如file.csv)但当filename 是一个相对路径(例如src/test/resources/file.csv)时,这有效,is 最终是null。
我需要它来处理相对路径,因为我正在通过 JUnit 运行一个测试套件,它查找具有相对路径的资源,并且这些测试来自我无法控制更改的 JAR(即我实现了外观实现测试套件使用自己的资源调用自己的测试的类 - 它们不在我的控制范围内)。
有没有办法让这种方法使用相对路径,或者我可以通过其他方式在我的类路径上找到测试正在寻找的那些资源?
【问题讨论】:
-
尝试删除 src 并从 /test 开始。
-
这只是一个通用示例。我将无法更改输入的路径,因为它们位于我无法更改的测试套件中。希望将所需的资源放在我的类路径中,然后代码将在创建 InputStream 时适当地找到它们。
-
它们与我的内部文件系统无关(这就是我不能使用 File 和 FileReader 的原因),它们是在 Maven 接受的 JAR 依赖项中定义的相对路径。
标签: java maven junit inputstream relative-path