在Silvelight 4.0的项目中我们也需要制作单元测试以保证项目的质量,本节将讲诉如何创建一个项目进行单元测试。

        一、创建一个名为SL4UnitAPP的Silverlight 应用程序,不需要Web承载网站。

        二、然后鼠标右键点击SL4UnitAPP解决方案,添加一个名为SL4UnitTest的Silverlight Unit Test Application。

        三、在平时VS2010 创建项目时无法添加一个Silverlight Unit Test Application,所以我们需要将C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\下的ItemTemplates文件夹和ProjectTemplates文件夹都拷贝到D:\My Documents\Visual Studio 2010\Templates目录下的ItemTemplates文件夹和ProjectTemplates文件夹。

             四、此时我们可以在VS2010创建一个Silverlight Unit Test Application应用程序如下图所示:

             五、在SL4UnitTest应用程序中添加引用SL4UnitApp项目。如下图所示:

             六、项目的树状图如下图所示:

             七、在SL4UnitApp项目的MainPage.xaml.cs中添加两个需要验证的函数和一个公共变量如下代码所示:

 


  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Net; 
  5. using System.Windows; 
  6. using System.Windows.Controls; 
  7. using System.Windows.Documents; 
  8. using System.Windows.Input; 
  9. using System.Windows.Media; 
  10. using System.Windows.Media.Animation; 
  11. using System.Windows.Shapes; 
  12.  
  13. namespace SL4UnitAPP 
  14. public partial class MainPage : UserControl 
  15. public MainPage() 
  16. InitializeComponent(); 
  17. ///  
  18. /// 返回一个字符mainPage 
  19. ///  
  20. /// <returns>returns
  21. public string ReturnString() 
  22. return "mainPage"
  23.  
  24. public string GetStringFromMethod; 
  25. ///  
  26. /// 设置公共变量值为SecMethod 
  27. ///  
  28. public void GetString() 
  29. GetStringFromMethod = "SecMethod"

             八、在SL4UnitTest项目中我们对MainPage类进行实例化,然后我们添加两个特性为[TestMethod]的变量以供测试是否通过单元测 试(注意:如果因为断言错误,而进入调试模式,可以按F5继续运行,以看单元测试结果),代码如下:

 


  1. using System; 
  2. using System.Net; 
  3. using System.Windows; 
  4. using System.Windows.Controls; 
  5. using System.Windows.Documents; 
  6. using System.Windows.Ink; 
  7. using System.Windows.Input; 
  8. using System.Windows.Media; 
  9. using System.Windows.Media.Animation; 
  10. using System.Windows.Shapes; 
  11. using Microsoft.Silverlight.Testing; 
  12. using Microsoft.VisualStudio.TestTools.UnitTesting; 
  13. using SL4UnitAPP; 
  14.  
  15. namespace SL4UnitTest 
  16. [TestClass] 
  17. public class Tests 
  18. MainPage mpage = new MainPage(); 
  19. [TestMethod] 
  20. public void TestMethod1() 
  21. //断言mpage.ReturnString()获得的结果是mainPage 
  22. Assert.AreEqual(mpage.ReturnString(), "mainPage"); 
  23.  
  24. [TestMethod] 
  25. public void TestMethod2() 
  26. //先运行mpage.GetString()函数,然后断言GetStringFromMethod值为SecMethod 
  27. mpage.GetString(); 
  28. Assert.AreEqual(mpage.GetStringFromMethod, "SecMethod1"); 

             九、本实例中第一个方法是正确的断言,第二个方法很明显是错误的断言,所以按下F5看到的结果如下面两张图所示:

             本实例采用VS2010+Silverlight 4.0编写,如需源码请点击 SL4UnitAPP.zip 下载。