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
當然這些方法目前沒有官方文檔,就不妄下判斷了,可以自己嘗試一下,應該怎么使用。