java - 访问包中的文件

标签 java junit

我正在使用 JUnit 对我的应用程序进行一些自动化测试,这些测试位于我的 JUnit 类包中名为测试的文件夹中。 截至目前,我使用以下方式访问文件:

File file = new File(MyClass.class.getResource("../path/to/tests/" + name).toURI());

有没有更干净(更好)的方法来做到这一点?

谢谢

最佳答案

如果您想使用类加载器加载测试数据,则不能使用FileFile 实例表示文件系统中的路径。该类从文件系统、jar 文件、zip 文件或其他地方加载文件。因此,类加载器不允许您访问文件,而是访问资源。

使用MyClass.class.getResourceAsStream("/the/absolute/path.txt")加载path.txt文件的内容作为输入流。该文件必须位于类路径中的任何位置:path.txt 是在文件系统中还是在 jar 中并不重要,只要它可以在类路径中的包 the.absolute 中找到即可。因此,如果您的数据文件位于测试文件夹中,该文件夹位于测试的源目录下,则使用的路径应为 /tests/data.txt。请注意,这是有效的,因为 Eclipse 会自动“编译”非 Java 文件,只需将它们复制到输出目录(传统上为 bin 或类),并且当您运行测试时,该目录位于类路径中。

如果您想将此数据作为文本而不是字节加载,只需用 InputStreamReader 包装 InputStream 即可。

关于java - 访问包中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7152749/

相关文章:

java - 页面滚动时滚动模态框

java - 如何对空的 Optional 执行 null 检查

java - Surefire - 排除测试目录

java - JUnit 测试抛出 java.lang.NoClassDefFoundError

java - 在 EditText 中输入密码时启动 Activity

java - 最好的 Java OXM 库是什么?

JavaFX TextField OnKeyTyped 无法正常工作

java - RFT 和 JUnit 相关问题

java - Jframe 在 @Test JUnit 中消失

Java 适配器注解