BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

使用Rx和Silverlight编写异步测试

| 作者 Jonathan Allen 关注 530 他的粉丝 ,译者 李永伦 关注 0 他的粉丝 发布于 2011年8月11日. 估计阅读时间: 1 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

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

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

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

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

查看英文原文:Writing Asynchronous Tests with Rx and Silverlight

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT