2

FileSystemWatcherのErrorイベントにアタッチしたプライベートメソッドを単体テストしようとしています。MSDNによると、このイベントは「内部バッファがオーバーフローしたときに発生する」とのことです。バッファオーバーフローを引き起こそうとしましたが、今のところ成功していません。FileSystemWatcherのさまざまなプロパティは次のとおりです。

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

ユニットテストの目的でこのイベントを発生させる最良の方法は何ですか?

4

2 に答える 2

4

バッファオーバーフローを確実に引き起こすことができるとは思えません。システムと構成に依存します。(負荷に依存する場合もあります)。代わりに、FileSystemWatcherクラスをモックし、モックされたイベントを自分でトリガーしてハンドラーをテストすることをお勧めします。

モックの概念に慣れていない場合の詳細については、ウィキペディア:モックオブジェクトとこのモックフレームワークのリストを参照してください。

于 2010-03-30T16:53:31.787 に答える
1

エラーイベントのハンドラーを既存のコードに追加しただけです:)。私はファイルの処理をテストしていました.112個のファイルで(私が取り組んでいるバグから持っているように)、ファイルを監視フォルダーにコピーするたびにトリガーされます。各ファイルは約 72k で、TotalCommander を使用してそれらをコピーします。これは単純な反復コピーを行うと思われます。

残念ながら、それはすべてシステム構成と負荷に依存します(サイモンが指摘したように)。

確かに、書き込まれた各バイトの後に最終的に多数のライターでフラッシュを試みることはできますが、それを保証するものは何もありません。

于 2010-04-09T19:24:05.780 に答える