【发布时间】:2011-05-20 16:27:28
【问题描述】:
我已经实现了两个静态的void 方法来创建文件和读取文件。
而且我想测试这些方法,但我不知道如何测试适用于文件的方法。
最好的方法是什么?
我正在使用 Java 和 JUnit。
【问题讨论】:
-
这是两个密切相关的问题。关于witing案例,见stackoverflow.com/questions/3381801/…
标签: file unit-testing junit
我已经实现了两个静态的void 方法来创建文件和读取文件。
而且我想测试这些方法,但我不知道如何测试适用于文件的方法。
最好的方法是什么?
我正在使用 Java 和 JUnit。
【问题讨论】:
标签: file unit-testing junit
最好的办法是重构您的方法以使用输入/输出流而不是直接使用文件。这样,您可以在单元测试中轻松地将 StringReaders/Writers 传递给它们(前提是它们可以处理文本文件 - 如果不是,您需要适当类型的流)。
如果您直接使用文件,您的单元测试会变得更加复杂,因为它们需要额外的设置/拆卸代码来创建和清理测试目录,以及在每个测试中读取/写入文件,这会减慢测试速度。此外,它还可能导致诸如无权在特定目录中写入(例如,因为它是在另一个开发人员启动的测试运行中创建的)、磁盘已满错误等问题的可能性。最好让您的单元测试自己进行- 尽可能包含。
【讨论】:
您可以创建一个 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
}
要记住的一点是,如果您使用绝对路径,不同的开发人员可能有不同的资源路径,因此您可能需要使用配置文件...
【讨论】: