如何在Java中测试文件系统操作

如何在Java中测试文件系统操作,java,testing,Java,Testing,我正在写一个程序,在文件系统中创建和编辑目录和文件 我想写一个测试,这样做 (1) 检查给定目录是否存在,然后重试 (2) 在现有目录中创建一个目录 测试这种功能的最佳方法是什么 有没有办法伪造文件系统(例如内存中的文件系统?)或者我只需要使用一个临时输出目录来创建/检查真实目录?您可以为文件系统交互编写包装函数,出于测试目的,将这些函数替换为实际上不接触文件系统的函数(但它们会跟踪什么是打开的,等等,您的测试可以验证这些)。您可以为文件系统交互编写包装函数,出于测试目的,将这些函数替换为实际不

我正在写一个程序,在文件系统中创建和编辑目录和文件

我想写一个测试,这样做

(1) 检查给定目录是否存在,然后重试

(2) 在现有目录中创建一个目录

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


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

您可以为文件系统交互编写包装函数,出于测试目的,将这些函数替换为实际上不接触文件系统的函数(但它们会跟踪什么是打开的,等等,您的测试可以验证这些)。

您可以为文件系统交互编写包装函数,出于测试目的,将这些函数替换为实际不接触文件系统的函数(但它们会跟踪什么是打开的,等等,您的测试可以验证这些函数).

如果您正在进行单元测试,则可以编写类以使其接受文件对象。如果测试通过,则可以假设您的类在连接到实际使用它的类时可以工作


这还允许您使用其他人提到的真正的临时目录进行测试。

如果您正在进行单元测试,您可以编写您的类,以便它能够接受文件对象。如果您的测试通过,那么您可以假设您的类在连接到实际使用它的类时能够工作


这也将允许您使用其他人提到的真正的临时目录进行测试。

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

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

对于#1,您为什么不使用新文件(“dir”).isDirectory()?如果您想跨平台编程,最好创建和检查真实目录。Windows方式和UNIX方式(包括OS X和Linux)之间的文件系统操作方式有许多不同之处因此,您需要确保它们经过了正确的测试。对于#1,为什么不使用新文件(“dir”).isDirectory()?如果您希望跨平台编程,最好创建和检查真实目录。Windows方式和UNIX方式之间的文件系统操作工作方式有许多不同(包括OSX和Linux),因此您需要确保它们经过了正确的测试。