Silverlight单元测试框架

Silverlight单元测试框架

微软的silverlight单元测试框架现在已经托管到了MSDN Code Gallery网站上,你可以在上边找到最新的Release版本和一些最新的资料。

http://code.msdn.microsoft.com/silverlightut/

每当一个开发人员尝试过了测试驱动开发(TDD)就会十分的欣赏这个方式。接下来我将介绍一下如何使用来使用这个框架。

开始单元测试项目

配置环境

1.下载Silverlight Unit Test VS模板 2.下载Silverlight Unit Test Framework Binaries库

解压

将里面包含的SilverlightTestProject_CSharp.zip和SilverlightTestProject_VB.zip文件拷贝到(不要再把上述两个.zip文件解压了,不然VS不认)

%userprofile%\Documents\Visual Studio 2008\Templates\ProjectTemplates

再将SilverlightTestClass_CSharp.zip以及SilverlightTestClass_VB.zip文件拷贝到

%userprofile%\Documents\Visual Studio 2008\Templates\ItemTemplates

启动VS2008

看一下项目文件

添加一下缺少的DLL引用

配置成功!

浅析框架

这里项目里只有两个文件,让我们来看看

App.xaml.cs

代码语言:javascript
复制
private void Application_Startup(object sender, StartupEventArgs e)
{
    this.RootVisual = UnitTestSystem.CreateTestPage();
} 

其中UnitTestSystem是Microsoft.Silverlight.Testing命名空间下的一个类,而CreateTestPage()方法将返回一个UIElement。

Test.cs

很简单就是在里边写测试方法的。

代码语言:javascript
复制
[TestMethod]
public void TestMethod()
{
Assert.Inconclusive();
}


改为

代码语言:javascript
复制
[TestMethod] public void TestMethod()
{
Assert.IsTrue(true);
}

F5运行

测试自己的Silverlight项目

新建一个Silverlight项目

给MainPage.xaml做简单的修改

代码语言:javascript
复制
    public partial class MainPage : UserControl
{
private string _author;
public string Author { get; set; }

    public MainPage()
    {
        InitializeComponent();
    }
}</code></pre></div></div><p>单元测试中添加对其的引用,并可新建立一个class来对其做测试</p><figure class=""></figure><p>编写测试方法</p><div class="rno-markdown-code"><div class="rno-markdown-code-toolbar"><div class="rno-markdown-code-toolbar-info"><div class="rno-markdown-code-toolbar-item is-type"><span class="is-m-hidden">代码语言:</span>javascript</div></div><div class="rno-markdown-code-toolbar-opt"><div class="rno-markdown-code-toolbar-copy"><i class="icon-copy"></i><span class="is-m-hidden">复制</span></div></div></div><div class="developer-code-block"><pre class="prism-token token line-numbers language-javascript"><code class="language-javascript" style="margin-left:0">    [TestClass]
public class MyTest
{
    //[TestMethod]
    //[ExpectedException(typeof(NullReferenceException))]
    //public void NullInstance() {
    //    MainPage mainpage = null;
    //    string author = mainpage.Author;
    //}

    [TestMethod]
    [Description(&#34;测试用户名&#34;)]
    public void VerifyAuthor() {
        MainPage page = new MainPage();
        page.Author = &#34;nasa&#34;;
        Assert.IsNotNull(page.Author);
        Assert.AreEqual(page.Author, &#34;nasa&#34;);
    }
}</code></pre></div></div><p>F5运行</p><figure class=""></figure><p>也可点击单个的方法查看详情</p><figure class=""></figure><p>大家可以直接将自己的sl项目附加进来进行测试,当然在实际的项目中不会这么简单。</p><p><strong>总结  </strong> </p><p>使用TDD单元测试框架为Silverlight带来了一个更好的测试方案,你不用再一点一点的设置断点跟着程序跑。 </p><p>能充分的进行单元测试,是提高软件质量,降低开发成本的必由之路。如果养成了对自己写的代码进行单元测试的习惯,不但可以写出高质量的代码,而且还能提高编程水平。</p><p><strong>附录 </strong></p><p><strong>ScottGu introduction</strong></p><p><strong>Introductory post by Jeff Wilcox</strong></p><p><strong>Introductory video and screencast</strong></p><p><strong>VSTT basics</strong></p><p><strong>How to use these bits with Beta 2</strong> </p><p><strong>参考资料</strong></p><p>http://www.cnblogs.com/ibillguo/archive/2008/10/27/1320067.html</p><p>http://weblogs.asp.net/scottgu/archive/2008/04/02/unit-testing-with-silverlight.aspx</p><p>http://www.jeff.wilcox.name/2008/03/silverlight2-unit-testing/     </p>