如何将现有文本文件用于JUnit测试

Jas*_* Hu 1 java junit file

我想对一个操作文本文件内容的类进行单元测试.我有一组现有的文本文件作为测试用例.我如何以及在何处存储JUnit测试将使用的这些文本文件?

我已经尝试将它们与单元测试.Java文件放在同一目录中并尝试访问它们,但是我找不到一个文件:

File baseFile = new File("base_test.txt");
assertTrue(baseFile.exists());
Run Code Online (Sandbox Code Playgroud)

编辑: 根据答案,我尝试使用文件ClassLoader.文件在那里,但是当我尝试使用InputStream那些文件时,我得到了一个"Stream Closed"例外.

我试过InputStream从文件和URL中获取两者:

    FileInputStream in = new FileInputStream(new File(filename));
...
    InputStream in = baseUrl.openStream();
Run Code Online (Sandbox Code Playgroud)

同样的例外.

Ste*_*ler 5

您可以将文件放在类路径的根目录中(/bin例如),然后您可以使用流来访问它

getClass().getClassLoader().getResourceAsStream("/test.txt")
Run Code Online (Sandbox Code Playgroud)

如果您的类打包为jar文件,这甚至可以工作.

如果您需要访问该文件,可以使用

File file = new File(getClass().getClassLoader().getResource("/test.txt").toURI());
Run Code Online (Sandbox Code Playgroud)

当然,如果您想将文本文件放在测试类或其他文件夹旁边,则可以使用

File file = new File(getClass().getClassLoader().getResource("/net/winklerweb/somepackage/test.txt").toURI());
Run Code Online (Sandbox Code Playgroud)

或任何其他路径......