在Silverlight里做集成测试很难。几乎任何类型的外部服务都需要一个返回UI线程的异步调用。和大多数单元测试框架不同,Silverlight使用的那个单元测试框架运行在相同线程上,因此你不能阻止它等待服务调用的返回。

更糟糕的是,事实上这个Silverlight测试框架(简称Silverlight Unit Testing Framework)非常容易出错。任何线程的未处理异常都会破坏整个测试的运行,而前面提到的集成测试却需要使用多线程。

一个解决方案是始终通过EnqueueCallback确保异常恰当地报告给单元测试框架。但是,这也不是那么好做的,只要一个错误就能中断接下来的所有测试。Richard Szalay示范了如何使用Reactive Extensions强化异步测试,同时降低出错率。

Richard使用的技术假设你通过传统的Begin和End两个方法使用异步模式。使用Observable.FromAsyncPattern函数把服务的调用封装到一个IObservable里。一旦完成,ObserveOnTest函数就会通过一个叫做WorkItemTestScheduler的特殊计划程序把单元测试框架关联到调用链上。最后调用Subscribe函数启动序列并计算结果。
want to cheat on my wife read women wanting to cheat
what causes women to cheat boomasontennis.com husband watches wife cheat
TOP

(中文清晰版PDF)
want to cheat on my wife click women wanting to cheat
TOP