Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 如何测试文件是否保持不变?_Unit Testing_Language Agnostic - Fatal编程技术网

Unit testing 如何测试文件是否保持不变?

Unit testing 如何测试文件是否保持不变?,unit-testing,language-agnostic,Unit Testing,Language Agnostic,我正在测试一个可能修改文件的函数。在我希望它保持不变的情况下,如何测试它是否保持不变 我不想检查内容,因为文件可能已被相同的内容覆盖,更改了修改时间 我也不能真正检查修改时间。因为我喜欢测试是自包含的,所以原始文件将在(非)修改测试之前编写,这使得修改时间不可靠 您可以使用DI来模拟您的文件编写器。这样,您根本不需要该文件,只需检查是否调用了write函数,并且您知道该文件是否已修改。您可以使用DI模拟您的filewriter。这样,您根本不需要该文件,只需检查是否调用了write函数,并且您

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

  • 我不想检查内容,因为文件可能已被相同的内容覆盖,更改了修改时间
  • 我也不能真正检查修改时间。因为我喜欢测试是自包含的,所以原始文件将在(非)修改测试之前编写,这使得修改时间不可靠

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

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

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

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());

我会把这个函数分成两个独立的函数;第一个决定是否进行修改,第二个作出通知。只有在必要时才调用第二个。用假装的语言:

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());

好吧,假设您使用的是一个文本文件和合理的大小。只要散列文件内容,如果修改前和修改后的哈希代码相同,则表示文件内容没有更改

这里是到算法设计手册的链接-史蒂夫·斯基纳(谷歌图书结果) 第3.8节

假设您使用的是一个文本文件和合理的大小。只要散列文件内容,如果修改前和修改后的哈希代码相同,则表示文件内容没有更改

这里是到算法设计手册的链接-史蒂夫·斯基纳(谷歌图书结果) 第3.8节

我假设DI是指依赖项注入?是的,DI是指依赖项注入。我假设DI是指依赖项注入?是的,DI是指依赖项注入。