用WatiN對ASP.NET頁面進行單元測試

發表于:2010-07-06來源:作者:點擊數: 標簽:單元AspWatiNNetNET
用WatiN對ASP.NET頁面進行單元測試 軟件測試 單元測試是應用程序設計的一個重要部分,它可應用于程序的多個層次。本文將主要關注用戶界面層的單元測試。我們將使用WatiN 測試ASP.NET應用程序。 什么是WatiN? WatiN 是一個源自 Watir 的工具,用于測試Web頁面

  用WatiN對ASP.NET頁面進行單元測試     軟件測試

  單元測試是應用程序設計的一個重要部分,它可應用于程序的多個層次。本文將主要關注用戶界面層的單元測試。我們將使用WatiN 測試ASP.NET應用程序。

  什么是WatiN?

  WatiN 是一個源自Watir的工具,用于測試Web頁面。WatiN表示Web Application Testing in .NET。

  我們要測試什么?

  在本文中我們將測試一個簡單的ASP.NET頁面,用這個頁面來演示認同、接受(agreement aclearcase/" target="_blank" >cceptance)的場景。用戶在文本框中輸入名字,點擊“I agree”復選框,然后按下submit按鈕。這顯然是一個非常簡單的頁面,在你熟悉了WatiN框架的工作機制后,就可以將這里的理念用于大型頁面的測試了。

  測試認同(Agreement)頁面:

  向解決方案添加一個類庫項目,并為其添加對測試工具(我這里用的是MbUnit,但你完全可以使用NUnit或VSTS的測試項目)和WatiN庫的引用。你可以在這里下載WatiN。

  下面的測試代碼用來確保用戶已經認同。

  [TestFixture(ApartmentState = ApartmentState.STA)]public class TestAgreementPage{ [Test] public void TestCanAcceptUserAgreement() { IE ie = new IE(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); }}這個類有TestFixture特性(Attribute),STA值確保該測試運行于STA(Single Threaded Apartment)狀態下。這是因為測試代碼要加載IE。

  WatiN中的IE類完成了主要工作。IE類打開IE,通過name或id來引用html控件。這一行 ie.TextField("txtName"). TypeText("Mohammad Azam"),引用了id為“txtName”的文本框。瀏覽器加載后,WatiN會將值“Mohammad Azam”寫入id為“txtName”的文本框。這個過程在測試時你會看到的。然后id為“chkAgree”的復選框會被選中。最后,WatiN會按下提交按鈕,窗體被提交。

  運行測試,失敗。因為名為“lblMessage”的Label從未被賦值為“Valid”。加上這段代碼:

  protected void btnAgree_Click(object sender, EventArgs e){ lblMessage.Text = "Valid"; }現在,如果你運行測試它會通過。但是,好像不太正確。如果我們把這一行測試代碼刪掉:

  ie.CheckBox("chkAgree").Checked = true; 再次運行測試,依然能通過。這可不對!應當只有在CheckBox選中時才可通過。將頁面的Code behind代碼改一下。

  protected void btnAgree_Click(object sender, EventArgs e){ if (chkAgree.Checked) { lblMessage.Text = "Valid"; }}現在,測試只有在CheckBox選中時才可通過了。

  以編程方式運行Web服務器

  在上例中我們需要運行WebServer,要么是通過命令行工具,要么是通過運行Web項目。但有時我們需要單元測試項目能夠動態打開一個WebServer。一起來看看。

 

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97