2

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

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

出于单元测试的目的,引发此事件的最佳方法是什么?

4

2 回答 2

4

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

如果您不熟悉模拟的概念,请参阅Wikipedia: Mock Object和这个模拟框架列表以获取更多详细信息。

于 2010-03-30T16:53:31.787 回答
1

刚刚将错误事件的处理程序添加到现有代码:)。我正在测试文件的处理,并且有 112 个文件(正如我正在处理的错误中所做的那样),每次我将文件复制到监视文件夹时都会触发它。每个文件大约 72k,我使用 TotalCommander 复制它们,我想它是一个简单的迭代复制。

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

当然,您可以尝试在每个写入字节后最终使用多个写入器进行刷新,但没有任何东西可以保证它。

于 2010-04-09T19:24:05.780 回答