如何测试文件保持不变?

时间:2013-04-15 15:05:22

标签: unit-testing language-agnostic

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

  • 我不想查看内容,因为该文件可能已被相同内容覆盖,从而更改了修改时间。
  • 我也无法真正检查修改时间。由于我希望测试是自包含的,原始文件将在(非)修改测试之前编写,使修改时间不可靠。

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分: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());

答案 2 :(得分:0)

假设您使用的是文本文件且大小合理。只是哈希文件内容,如果在修改之前和modidfy哈希码相同之后 - 那就意味着文件内容没有改变。

以下是Algorithim设计手册的链接 - Steve Skiena(Google图书搜索结果) 第3.8节 How can i convicne you that a file isn't changed ?