单元测试FileSystemWatcher.Error事件

时间:2010-03-30 16:41:14

标签: c# .net unit-testing filesystemwatcher

我正在尝试对我附加到FileSystemWatcher的Error事件的私有方法进行单元测试。 MSDN表示此事件“在内部缓冲区溢出时发生”。我试图导致缓冲区溢出但到目前为止还没有成功。 FileSystemWatcher的各种属性是:

fileWatcher.IncludeSubdirectories = false;
fileWatcher.Filter = "*";
fileWatcher.NotifyFilter = (NotifyFilters.FileName | NotifyFilters.LastAccess | NotifyFilters.Size);

为了进行单元测试,提升此事件的最佳方法是什么?

2 个答案:

答案 0 :(得分:4)

我怀疑你是否能够可靠地导致缓冲区溢出。它将取决于系统和配置。 (甚至可能与负载有关)。我建议你改为模拟FileSystemWatcher类并自己触发模拟事件来测试你的处理程序。

如果您不熟悉嘲笑的话,请参阅Wikipedia: Mock Object和此List of Mocking frameworks了解更多详情。

答案 1 :(得分:1)

刚刚将Error事件的处理程序添加到现有代码:)。我正在测试文件的处理和112个文件(正如我从我正在处理的bug中获得的)每次将文件复制到监视文件夹时都会触发。 每个文件大约是72k,我使用TotalCommander复制它们,我想这是一个简单的迭代副本。

不幸的是,这一切都取决于系统配置&加载(正如西蒙指出的那样)。

当然,你可以尝试在每个写入的字节后用最终的许多作者进行刷新,但没有什么可以保证它。