Silverlight 中的很多操作都是异步的,很多情况下要求单元测试也是异步的,但是介绍异步单元测试的文档很少。通过对 Silverlight Toolkit 中的 Microsoft.Silverlight.Testing 和 Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight 这两个文件的分析以及尝试,终于发现了做异步单元测试的方法,如果需要在 Silverlight 项目中使用异步单元测试,大致的步骤如下:
- 新建 Silverlight 项目,添加对 Microsoft.Silverlight.Testing.dll 、Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll 连个文件的引用,这个不用做过多的介绍。
- 打开 App.xaml.cs 文件,添加对命名空间 Microsoft.Silverlight.Testing 的引用;找到 Application_Startup 方法, 将应用程序的 RootVisual 改为测试页面,然后可以删除自动生成的 MainPage.xaml 文件,修改好的 Application_Startup 方法如下:
- 新建单元测试类 AsyncTest ,让它继承自 Microsoft.Silverlight.Testing.SilverlightTest 基类, 然后添加 TestClass 标记,最终文件内容如下图所示:
- 添加异步单元测试,假设要测试内容是读取服务端一个文件,然后判断返回的文件内容是否是正确的。添加测试方法,并依此添加两个标记:TestMethod、Asynchronous, 如下所示:
- 添加测试代码如下:
- 最终运行效果如下图:
以上就是通过尝试发现的做异步单元测试的方法, 在实际做异步单元测试的时候,下面这几个方法需要留意:
- TestComplete
- EnqueueWorkItem
- EnqueueDelay
- EnqueueConditional
- EnqueueTestComplete
- EnqueueCallback
当然这些方法目前没有官方文档,就不妄下判断了,可以自己尝试一下,应该怎么使用。