【问题标题】:How to test file system manipulation in Java如何在 Java 中测试文件系统操作
【发布时间】:2009-09-03 00:48:07
【问题描述】:

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

我想写一个测试来做类似的事情

(1) 检查给定目录是否存在并

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

测试此类功能的最佳方法是什么?

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

【问题讨论】:

  • 对于#1,你为什么不使用 new File("dir").isDirectory()?
  • 如果你想跨平台编程你最好创建和检查真实的目录。 Windows 方式和 UNIX 方式(包括 OS X 和 Linux)之间文件系统操作的工作方式存在许多差异,因此您需要确保它们经过正确测试。

标签: java testing


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-05
        • 1970-01-01
        • 2011-03-17
        • 1970-01-01
        • 2011-11-12
        • 1970-01-01
        • 2017-08-27
        • 2010-09-24
        相关资源
        最近更新 更多