1

我正在测试一个可能修改文件的函数。在我想要的情况下,我如何测试它是否保持不变?

  • 我不想检查内容,因为文件可能已经被相同的内容覆盖,改变了修改时间。
  • 我也无法真正检查修改时间。由于我喜欢独立的测试,原始文件将在(非)修改测试之前编写,从而使修改时间不可靠。
4

3 回答 3

5

您可以使用 DI 来模拟您的文件编写器。这样你根本不需要文件,只检查是否调用了 write 函数并且你知道文件是否被修改。

于 2013-04-15T15:13:15.723 回答
1

我会将函数拆分为两个单独的函数;第一个决定是否应该进行修改,第二个发出通知。第二个仅在必要时调用。假装语言:

function bool IsModificationRequired()
{
    // return true or false based on your actual code
}

function void WriteFile()
{
    new File().Write("file");
}

function void WriteIfModified()
{
    if (IsModificationRequired())
        WriteFile();

}

并测试

Assert.IsTrue(IsModificationRequired());
于 2013-04-15T15:16:01.400 回答
0

假设您使用的是文本文件且大小合理。只需对文件内容进行哈希处理,如果修改之前和修改后的哈希码相同,则表示文件内容未更改。

这是 Algorithim 设计手册的链接 - Steve Skiena(Google 图书结果)第 3.8 节 我如何说服您文件未更改?

于 2013-04-15T18:52:05.293 回答