如何使用System.Windows.Threading.Dispatcher对类进行单元测试

时间:2010-07-01 16:54:39

标签: .net wpf unit-testing multithreading

如何对使用System.Windows.Threading.Dispatcher的课程进行单元测试?

我在WPF的设置中遵循MVVM模式。作为其中的一部分,我正在按照我在this video中看到的用于DispatchingBlah的模式创建一个DispatchingQuoteSource类(见1:06:16 ish)。

我想测试我的类已将正确的东西排队到调度程序对象,但我无法弄清楚如何执行此操作。我(我可以找到)无法同步刷新队列以查看排队对象的效果。我也无法查看如何查询队列以检查已添加的内容。

我是否需要围绕System.Windows.Threading.Dispatcher类编写一些界面?

2 个答案:

答案 0 :(得分:0)

我将调度程序类隐藏在接口后面,并使用模拟调度程序(或只是手动假冒)进行测试。这样,您可以验证是否进行了正确的调用,而无需尝试实际测试实际的调度程序。

当然,这是假设您要测试VM,并且您信任调度程序。即使在这种情况下,最好还是单独测试调度员。

答案 1 :(得分:0)

实际上,已存在比调度程序类周围的接口更好的解决方案。它被称为SynchronizationContext。这是Dispatcher理念的抽象,也适用于Windows窗体(使用ISynchronizeInvoke)。因此,您还可以获得为您的课程增加可重用性的好处。

Nito.Async库有几种在使用SynchronizationContext进行单元测试时非常有用的类型;它有许多使用这些类的单元测试。

相关问题