如何单元测试创​​建和读取文件的方法

时间:2011-05-20 16:27:28

标签: file unit-testing junit

我已经实现了两个静态void方法,用于创建文件和读取文件。 我想测试方法,但我不知道如何测试使用文件的方法。 最好的方法是什么?

我正在使用Java和JUnit。

2 个答案:

答案 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
}

要记住的一件事是,如果使用绝对路径,不同的开发人员可能有不同的资源路径,因此您可能需要使用配置文件......