2010-03-30 120 views
2

我試圖單元測試一個私有方法,我已附加到我的FileSystemWatcher的錯誤事件。 MSDN說這個事件「發生在內部緩衝區溢出時。」我試圖導致緩衝區溢出,但迄今尚未成功。 FileSystemWatcher的各種屬性如下:單元測試FileSystemWatcher.Error事件

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

爲了進行單元測試而提高此事件的最佳方式是什麼?

回答

4

我懷疑你將能夠可靠地導致緩衝區溢出。這將取決於系統和配置。 (它甚至可能與負載有關)。我建議你改用FileSystemWatcher類來觸發模擬事件來測試你的處理程序。

請參閱Wikipedia: Mock Object和這List of Mocking frameworks瞭解更多的細節,如果你是新的嘲笑的想法。

1

剛剛爲錯誤事件處理程序添加到現有的代碼:)。我正在測試文件的處理和112個文件(正如我從我正在處理的錯誤中得到的),每當我將文件複製到監視文件夾時,都會觸發它。 每個文件大約72k,我使用TotalCommander複製它們,我想這是一個簡單的迭代複製。

不幸的是,這一切都取決於系統配置&加載(如西蒙指出)。

當然,你可以嘗試在每個寫入字節之後刷寫最終的許多作者,但沒有任何事情可以保證它。