Unit testing 如何测试文件是否保持不变?
我正在测试一个可能修改文件的函数。在我希望它保持不变的情况下,如何测试它是否保持不变Unit testing 如何测试文件是否保持不变?,unit-testing,language-agnostic,Unit Testing,Language Agnostic,我正在测试一个可能修改文件的函数。在我希望它保持不变的情况下,如何测试它是否保持不变 我不想检查内容,因为文件可能已被相同的内容覆盖,更改了修改时间 我也不能真正检查修改时间。因为我喜欢测试是自包含的,所以原始文件将在(非)修改测试之前编写,这使得修改时间不可靠 您可以使用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是指依赖项注入。