【问题标题】:How to unit test methods that create and read files如何对创建和读取文件的方法进行单元测试
【发布时间】:2011-05-20 16:27:28
【问题描述】:

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

我正在使用 Java 和 JUnit。

【问题讨论】:

标签: file unit-testing junit


【解决方案1】:

最好的办法是重构您的方法以使用输入/输出流而不是直接使用文件。这样,您可以在单元测试中轻松地将 StringReaders/Writers 传递给它们(前提是它们可以处理文本文件 - 如果不是,您需要适当类型的流)。

如果您直接使用文件,您的单元测试会变得更加复杂,因为它们需要额外的设置/拆卸代码来创建和清理测试目录,以及在每个测试中读取/写入文件,这会减慢测试速度。此外,它还可能导致诸如无权在特定目录中写入(例如,因为它是在另一个开发人员启动的测试运行中创建的)、磁盘已满错误等问题的可能性。最好让您的单元测试自己进行- 尽可能包含。

【讨论】:

    【解决方案2】:

    您可以创建一个 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
    }
    

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

    【讨论】:

    • 谢谢。但是如何确定文件已创建或已读取?
    猜你喜欢
    • 2014-01-09
    • 1970-01-01
    • 2015-04-21
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2021-07-29
    • 1970-01-01
    相关资源
    最近更新 更多