我们在Silverlight 2 Beta1 版本中发布的一个重要的功能是允许你进行API层次和界面层次单元测试的单元测试用具(unit
test harness)。这个测试用具是跨浏览器和跨平台的,可以用来快速运行和核实自动化的单元测试:
除了发布Silverlight的这个单元测试用具外,我们还发布了用它建造的,对在Permissive License许可下发布的Silverlight控件源代码提供了自动化测试涵盖的2千个左右单元测试的源码。这个许可允许你将控件的源码进行修改,运行单元测试核实其行为,并且以任何形式重新发布这些控件。
学习如何单元测试Silverlight
Jeff Wilcox,Silverlight单元测试框架和用具的开发者,在这里发表了一篇精彩的博客贴子,讨论如何在解决方案中加一个Silverlight
Unit Test项目。你可以从我上个月撰写的这篇Expression Blend教程贴子上下载他用来示范测试的聊天应用。你也可以观看Jeff录制的这个很酷的录像贴子,在其中他对该单元测试框架和我们发布的测试案例做了示范。
就象Jeff在他的贴子里展示的那样,你现在可以往你的Visual Studio解决方案中加一个“Silverlight测试项目”,该项目封装针对你正开发的应用的单元测试:
然后你可以往测试项目中添加单元测试类,来测试API或模拟Silverlight控件中的界面动作(例如模拟按钮点击等)。
然后你可以运行测试项目,执行其中的测试,来核实和汇报它们的状态。
Jeff的测试框架自动地提供基于浏览器的测试用具和报告系统(意味着你可以在任何能运行Silverlight的浏览器或OS组合上运行它):
Jeff的测试框架支持在每个测试后快速重置控件(以及避免对每个测试案例重启新的浏览器实例,这使得测试非常快)。
你可以在几秒钟内很快地突过成百上千个自动化的测试:绿的结果意味着测试都通过了。红的结果表示某个测试案例失败了,同时记录断言失败(assertion
failure)以及出现的运行时异常。
结语
如果你曾有困难采取策略对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方案。
希望本文对你有所帮助。
|