2009-09-03 72 views
1

我正在编写一个程序,用于在文件系统中创建和编辑目录和文件。如何在Java中测试文件系统操作

我想写一个测试,不喜欢的东西

(1)检查给定的目录存在

(2)创建现有目录中的目录。

什么是测试这种功能的最佳方法?

有没有办法伪造一个文件系统(例如在内存中?),还是只需要使用一个创建/检查真实目录的临时输出目录?

+0

对于#1,为什么不使用新文件(“dir”)。isDirectory()? – 2009-09-03 01:00:07

+0

如果你想编程为跨平台,你最好创建和检查真实的目录。 Windows方式和UNIX方式(包括OS X和Linux)之间的文件系统操作方式有很多不同之处,因此您需要确保它们已经过正确测试。 – jwaddell 2009-09-03 01:01:54

回答

2

您可以为文件系统交互编写包装函数,并且为了测试目的,将这些函数替换为实际上不接触文件系统的函数(但它们会跟踪打开哪些内容以及哪些测试可以验证)。

1

如果你是单元测试,你可以写你的类,以便它接受一个File对象。如果你的测试通过了,那么你可以假设你的班级在你将它连接到一个实际使用它的班级时会工作。

这也可以让你测试其他人提到的真正的临时展位。

1

如果你在谈论单元测试(例如JUnit),我会确保你可以传递一个路径给你的可测试代码(依赖注入)。然后我将以跨平台的方式获取操作系统的临时文件夹,即使用System.getProperty("java.io.tmpdir");。然后执行代码,使用临时文件夹作为父文件写入文件/目录,对文件/目录进行断言,并且作为最佳实践,清理单元测试的tearDown()方法中的临时文件夹。

相关问题