经典论坛's Archiver

nasawz 发表于 2008-4-3 09:32

在Silverlight中做单元测试

【原文地址】[url=http://weblogs.asp.net/scottgu/archive/2008/04/02/unit-testing-with-silverlight.aspx]Unit Testing with Silverlight[/url]
【原文发表日期】 Wednesday, April 02, 2008 2:01 AM

我们在Silverlight 2 Beta1 版本中发布的一个重要的功能是允许你进行API层次和界面层次单元测试的单元测试用具(unit test harness)。这个测试用具是跨浏览器和跨平台的,可以用来快速运行和核实自动化的单元测试:

除了发布Silverlight的这个单元测试用具外,我们还发布了用它建造的,对在Permissive License许可下发布的[url=http://blogs.msdn.com/sburke/archive/2008/03/05/silverlight-2-beta-1-controls-available-including-source-and-unit-tests.aspx]Silverlight控件源代码[/url]提供了自动化测试涵盖的[url=http://blogs.msdn.com/sburke/archive/2008/03/05/silverlight-2-beta-1-controls-available-including-source-and-unit-tests.aspx]2千个左右单元测试的源码[/url]。这个许可允许你将控件的源码进行修改,运行单元测试核实其行为,并且以任何形式重新发布这些控件。
[b]学习如何单元测试Silverlight[/b]

Jeff Wilcox,Silverlight单元测试框架和用具的开发者,在[url=http://www.jeff.wilcox.name/2008/03/31/silverlight2-unit-testing/]这里[/url]发表了[url=http://www.jeff.wilcox.name/2008/03/31/silverlight2-unit-testing/]一篇精彩的博客贴子[/url],讨论如何在解决方案中加一个Silverlight Unit Test项目。你可以从我上个月撰写的这篇[url=http://weblogs.asp.net/scottgu/archive/2008/02/28/first-look-at-using-expression-blend-with-silverlight-2.aspx]Expression Blend教程贴子[/url]上下载他用来示范测试的[url=http://www.scottgu.com/blogposts/chatsample/chatclient.zip]聊天应用[/url]。你也可以观看Jeff录制的这个[url=http://www.jeff.wilcox.name/2008/03/20/vid-silverlight-control-ut/]很酷的录像贴子[/url],在其中他对该单元测试框架和我们发布的测试案例做了示范。

就象Jeff在他的贴子里展示的那样,你现在可以往你的Visual Studio解决方案中加一个“Silverlight测试项目”,该项目封装针对你正开发的应用的单元测试:
[img]http://media.jeff.wilcox.name/blog/mix08/NewProjectWithTemplate2.png[/img]
然后你可以往测试项目中添加单元测试类,来测试API或模拟Silverlight控件中的界面动作(例如模拟按钮点击等)。
[img]http://media.jeff.wilcox.name/blog/ut/1/ut9.png[/img]
然后你可以运行测试项目,执行其中的测试,来核实和汇报它们的状态。

Jeff的测试框架自动地提供基于浏览器的测试用具和报告系统(意味着你可以在任何能运行Silverlight的浏览器或OS组合上运行它):
[img]http://media.jeff.wilcox.name/blog/ut/1/ut11.png[/img]
Jeff的测试框架支持在每个测试后快速重置控件(以及避免对每个测试案例重启新的浏览器实例,这使得测试非常快)。

你可以在几秒钟内很快地突过成百上千个自动化的测试:
[img]http://media.jeff.wilcox.name/blog/ut/1/ut1.png[/img]
绿的结果意味着测试都通过了。红的结果表示某个测试案例失败了,同时记录断言失败(assertion failure)以及出现的运行时异常。
[b]结语[/b]

如果你曾有困难采取策略对AJAX应用进行自动化的单元测试或TDD的话,我认为你会发现Silverlight提供了一些极棒的测试选项。使用Visual Studio,你还可以将测试分离到你的解决方案的另外的项目中去,你不需要在你的Silverlight应用嵌入测试就可以运行它们。

除了支持上述的单元测试用具和框架外,我们还将在Silverlight 2的最终版中支持UI自动化APIs。这些API将促成accessibility的场景(允许屏幕阅读器可以用于Silverlight,以及促成 Silverlight应用对Section 508的相容性)。这些UI自动化API还将促成这样的UI测试场景,你可以建造end to end的浏览器界面自动化,来模拟真正的鼠标和键盘交互,促成自动化的end to end体验的测试。这些组合应该允许你建造极其坚固和可维护的RIA方案。

希望本文对你有所帮助,

Scott

附注: 想找到有关Silverlight 2更多的教程贴子和链接的话,请参阅我的新[url=http://weblogs.asp.net/scottgu/pages/silverlight-posts.aspx]《Silverlight 技巧,诀窍,教程和链接》[/url] 网页。

页: [1]



Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.