我已经实现了两个静态void
方法,用于创建文件和读取文件。
我想测试方法,但我不知道如何测试使用文件的方法。
最好的方法是什么?
我正在使用Java和JUnit。
答案 0 :(得分:17)
最好的方法是重构您的方法以使用输入/输出流而不是直接使用文件。这样,您可以在单元测试中轻松地将StringReaders / Writers传递给它们(前提是它们使用文本文件 - 如果没有,则需要适当类型的流)。
如果您直接使用文件,您的单元测试会变得更加复杂,因为他们需要额外的设置/拆卸代码来创建和清理测试目录,以及每次测试中的读/写文件,这会减慢测试速度。此外,它还可以解决诸如无权在特定目录中写入等问题的可能性(例如,因为它是在另一个开发人员启动的测试运行中创建的),磁盘已满错误等。最好保持单元测试自我 - 尽可能多地包含。
答案 1 :(得分:3)
您可以创建一个test / resources目录,其中包含专门用于测试的文件。这样做的缺点是你的代码需要能够传入路径,这不应该是一个障碍,即使代码现在没有这样设计。
所以在你的测试中你会有像
这样的东西public void testUtilWrite() {
YourUtil.writeFile(path, data); //whatever you have
File shouldExist = new File(path);
assertTrue(file.exists());
// now read the file and assert the data in it is correct
}
要记住的一件事是,如果使用绝对路径,不同的开发人员可能有不同的资源路径,因此您可能需要使用配置文件......