引言
單元測試是應用程序設計的一個重要部分,它可應用于程序的多個層次。本文將主要關注用戶界面層的單元測試。我們將使用WatiN 測試ASP.NET應用程序。
什么是WatiN?
WatiN 是一個源自Watir的工具,用于測試Web頁面。WatiN表示W(wǎng)eb Application Testing in .NET。
我們要測試什么?
在本文中我們將測試一個簡單的ASP.NET頁面,用這個頁面來演示認同、接受(agreement aclearcase/" target="_blank" >cceptance)的場景。用戶在文本框中輸入名字,點擊“I agree”復選框,然后按下submit按鈕。這顯然是一個非常簡單的頁面,在你熟悉了WatiN框架的工作機制后,可以將這里的理念用于大型頁面的測試了。
這里是待測頁面的截圖:
測試認同(Agreement)頁面:
向解決方案添加一個類庫項目,并為其添加對測試工具(我這里用的是MbUnit,但你完全可以使用NUnit或VSTS的測試項目)和WatiN庫的引用。你可以在這里下載WatiN。
下面的測試代碼用來確保用戶已經(jīng)認同。
[TestFixture(ApartmentState = ApartmentState.STA)]publicclassTestAgreementPage{[Test]publicvoidTestCanAcceptUserAgreement(){IE ie =newIE(ConfigurationManager.AppSettings["DefaultPageUrl"]);ie.TextField("txtName").TypeText("Mohammad Azam");ie.CheckBox("chkAgree").Checked =true;ie.Button("btnAgree").Click(); Assert.AreEqual("Valid", ie.Span("lblMessage").Text);}} .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: ; margin: 0em; } .csharpcode .lnum { color: #606060; }
這個類有TestFixture特性(Attribute),STA值確保該測試運行于STA(Single Threaded Apartment)狀態(tài)下。這是因為測試代碼要加載IE。
WatiN中的IE類完成了主要工作。IE類打開IE,通過name或id來引用html控件。這一行ie.TextField("txtName").TypeText("Mohammad Azam"),引用了id為“txtName”的文本框。瀏覽器加載后,WatiN會將值“Mohammad Azam”寫入id為“txtName”的文本框。這個過程在測試時你會看到的。然后id為“chkAgree”的復選框會被選中。后,WatiN會按下提交按鈕,窗體被提交。