如何对FileSystemWatcher事件进行单元测试?

5
我正在开发一个处理文档的系统,这些文档被转储到目标目录中。我通过检测FileSystemWatcher OnChanged事件来获取文件。
作为单元测试的一部分,我该如何自动化处理?我应该如何组织输入文件和输出文件以进行比较以验证转换是否正确?这是最好由批处理文件发出diff命令来处理的吗?

2
非常小心 - OnChanged有一些怪癖,例如它可能在文件创建之时就触发,但在文件完全写入之前,也可能不会在文件被删除或移动时触发等等。请注意这些问题。 - Steven A. Lowe
1个回答

7

首先要考虑你想要测试的是什么。

是在检测到文件更改后,是否正确处理了该文件?

还是FileSystemWatcher类起作用了?

或者是操作系统按照您的预期以正确的顺序向您发送了通知(其中“正确”的含义基本上是“按照您的期望”)?

如果只需进行处理,则可以考虑模拟监视程序类,或使用IoC容器提供触发单元测试事件的内容。

如果要判断操作系统是否按正确的顺序提供了正确的事件,则可以模拟处理文件的代码,只需保存一个状态,表示“是的,我被告知该文件已更改”,而单元测试将在临时目录中操作文件。

但需要注意的是,单元测试依赖的外部复杂性越高,它就会越容易破裂。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接