我正在使用 JUnit 对我的应用程序进行一些自动化测试,这些测试位于我的 JUnit 类包中名为测试的文件夹中。 截至目前,我使用以下方式访问文件:
File file = new File(MyClass.class.getResource("../path/to/tests/" + name).toURI());
有没有更干净(更好)的方法来做到这一点?
谢谢
最佳答案
如果您想使用类加载器加载测试数据,则不能使用File
。 File
实例表示文件系统中的路径。该类从文件系统、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/