[英]Silverlight Unit Testing
我正在使用Silverlight UnitTest framerwork有沒有一個很好的例子有如何用它對應用程序進行單元測試? 我正在成功地使用它來對silverlight類庫進行單元測試。
任何指針和鏈接將不勝感激。
謝謝,納特
我寫了幾篇關於Silverlight單元測試框架的博客文章。 第一部分介紹了如何使用異步屬性和框架的一些更高級的功能來測試異步代碼。 該帖子可以在http://jonas.follesoe.no/UnitTestingAsynchronousSilverlightCode.aspx找到
第二篇文章是關於使用Tag-attribute組織測試。 這使您可以在同一測試套件中進行單元/集成/性能/ UI測試,但一次只能執行一個特定類別。 該博客文章可在http://jonas.follesoe.no/EfficientTestingInSilverlight2UsingTags.aspx找到
Nath,Silverlight Control Toolkit使用它。 為什么不看看那里的單元測試呢?
這是我在Silverlight 5中進行單元測試的明確指南。 如果你沒有線索,從哪里開始,這將指導你必須做的所有要點。 本指南是關於在項目內部進行測試的。 你不會需要一個第二ODR第三Silverlight項目進行單元測試。
0.)關閉Silverlight項目。
1.)在此處下載Silverlight 5工具包並進行安裝。
2.)打開Windows資源管理器,轉到C:然后搜索這兩個文件:
Microsoft.Silverlight.Testing.dll
Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll
如果你沒有找到它們,那就錯了。
3.)在GAC中注冊這兩個DLL。 為此,請執行以下操作:
以管理員身份打開Visual Studio控制台。 復制每個語句並在控制台中執行它們:
gacutil / i“C:\\ Program Files \\ Microsoft SDKs \\ Silverlight \\ v5.0 \\ Toolkit \\ dec11 \\ Testing \\ Microsoft.Silverlight.Testing.dll”
gacutil / i“C:\\ Program Files \\ Microsoft SDKs \\ Silverlight \\ v5.0 \\ Toolkit \\ dec11 \\ Testing \\ Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll”
請記住,DLL的路徑可能在您的計算機上有所不同。 只需為您的機器鍵入正確的路徑即可。
4.打開Silverlight項目並添加上面的兩個DLL作為Silverlight項目的參考。 不是你的網絡項目。
5.將以下類添加到項目中。 你把它放在哪里都沒關系。 我的測試有一個額外的文件夾,但沒關系。
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Silverlight.Testing;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace Test
{
[TestClass]
public class Test_Svc_Login
{
[TestMethod]
public void Always_True()
{
Assert.IsTrue(true);
}
[TestMethod]
public void Always_False()
{
Assert.IsTrue(false);
}
[TestMethod]
public void Even_MoreAlways_False()
{
Assert.IsTrue(false);
}
}
}
6.點擊F6,嘗試編譯。 此時一切都應該沒問題。
7.在項目中找到“App.xaml.cs”文件。 在此文件中,您將找到以下語句。 當然是“新的Gui.MainPage();” 你的項目會有所不同。 只需搜索RootVisual。
this.RootVisual = new Gui.MainPage();
您可以使用以下代碼塊替換此語句。
#if DEBUG
if (System.Diagnostics.Debugger.IsAttached)
{
//You hit F5 ONLY
this.RootVisual = new Gui.MainPage();
}
else
{
//You hit CTRL + F5
RunUnitTests();
}
#else
//You are in Release Mode. You hit whatever you want.
this.RootVisual = new Gui.MainPage();
#endif
現在,將以下例程添加到App.xaml.cs類:
private void RunUnitTests()
{
#if DEBUG
//You hit CTRL + F5
var settings = new UnitTestSettings();
settings.TestHarness = new UnitTestHarness();
settings.StartRunImmediately = true;
settings.TestAssemblies.Add(Assembly.GetExecutingAssembly());
this.RootVisual = UnitTestSystem.CreateTestPage(settings);
#endif
}
8.按F6檢查一切是否正常。
9.如果仍然可以正常調試,請按F5查看。 按Ctrl + F5開始單元測試。
10.你完成了! 現在,您可以在Silverlight 5中進行單元測試。
請記住,工具包中的兩個DLL仍處於“實驗”模式。 沒有官方支持。 還要記住,approch就是在項目中運行測試。 現在,您甚至可以在發布模式下在客戶端計算機上運行這些測試。 如果想要這樣做,你必須改變#if DEBUG語句,但我認為你會看到它的全部內容。
當然,您可以在額外的項目中將此方法更改為單元測試。
快樂的編碼。
提示:如果在注冊兩個DLL后遇到System.Core.dll問題,只需使用gacutil再次注冊System.Core.dll。 像這樣:
gacutil / i“C:\\ Program Files \\ Reference Assemblies \\ Microsoft \\ Framework \\ Silverlight \\ v5.0 \\ System.Core.dll”
您還應該嘗試使用SilverUnit進行真正的Silverlight單元測試 ,它是一個非常易於使用的框架,它還可以保護您免受Silverlight事件處理的復雜性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.