欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

如何使用WatiN對ASP.NET頁面進行單元測試_AJAX教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:AJAX教程之jQuery事件總結
很少寫這些,看了1.2.3版本的改進,確實佩服,很方便. 1.綁定事件 (1) (p).bind(click, function(e){}); (2) (p).click(function() {}) 2.刪除事件 (1)刪除特定事件 (div).unbind(click); (2)刪除所有事件 (div).unbind(); 3.觸發事件 (1)trigger方

引言

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

什么是WatiN?

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

我們要測試什么?

在本文中我們將測試一個簡單的ASP.NET頁面,用這個頁面來演示認同、接受(agreement acceptance)的場景。用戶在文本框中輸入名字,點擊“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。一起來看看。

首先,如果你需要打開ASP.NET內部服務器(WebDev.WebServer),可以使用命令行。語法如下:

WebDev.WebServer.exe /port:1950 /path:"C:\Projects\MyWebApplication"

需要定位到WebDev.WebServer所在的目錄,默認情況下它在:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\WebDev.WebServer.exe

好了,現在來看看如何在單元測試中打開服務器。首先,添加必要的配置(App.config中)。

<configuration>
    <appSettings>
        <add key="WebServerExePath" value="C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\WebDev.WebServer.exe"/>
        <add key="Port" value="4463"/>
        <add key="WebApplicationPath" value="c:\projects\demowatiN\demowatiN" />
        <add key="DefaultPageUrl" value="http://localhost:4463/Default.aspx" />
    </appSettings>
</configuration>

BaseTestPage類可以通過這些信息運行服務器,所有繼承了它的測試類都可以使用這個功能了。

下面是BaseTestPage類的完整代碼:

public class BaseTestPage
{
    static Process server = null;
 
    static BaseTestPage()
    {
        if (Process.GetProcessesByName("WebDev.WebServer").Length == 0)
        {
            string webServerExePath = (string)ConfigurationManager.AppSettings["WebServerExePath"];
            server = new Process();
            Process.Start(webServerExePath, GetWebServerArguments());
        }
    }
 
    public static string GetWebServerArguments()
    {
        string args = String.Format("/port:{0} /path:\"{1}\"", GetPort(), GetWebApplicationPath());
        if (String.IsNullOrEmpty(args)) throw new ArgumentNullException("Arguments is not defined");
        return args;
    }
 
    public static string GetPort()
    {
        string port = ConfigurationManager.AppSettings["Port"] as String;
        if (String.IsNullOrEmpty(port)) throw new ArgumentNullException("Port is null or empty");
 
        return port;
    }
 
    public static string GetWebApplicationPath()
    {
        string webApplicationPath = ConfigurationManager.AppSettings["WebApplicationPath"] as String;
        if (String.IsNullOrEmpty(webApplicationPath)) throw new ArgumentNullException("WebApplicationPath is null or empty");
 
        return webApplicationPath;
    }
}

如果服務器沒有運行,我們會新建一個進程運行它,否則就使用已有的進程。GetWebServerArguments()、GetPort()和GetWebApplicationPath()僅僅是輔助方法,可以提高可讀性。

最后,你可以讓單元測試類繼承該類:

public class TestAgreementPage : BaseTestPage

現在,運行單元測試項目時,它會運行WebServer,然后再執行所有測試。

結論:

在本文中,我們學習了如何對用戶界面層進行單元測試,這些測試可幫助我們理解UI的需求,并快速地看到基于用戶輸入所得到的結果。而如果手動進行測試,就要花費很多時間了。

源碼:點擊這里。

本文翻譯自:Unit Testing ASP.NET Pages Using WatiN。

來源:http://www.cnblogs.com/anderslly

 

分享:淺析AJAX實例:動態進度條
1.建立進度條html頁面 progressbar.htm script language=javascript function setPgb(pgbID, pgbValue) { if ( pgbValue = 100 ) { //debugger; if (lblObj = document.getElementById(pgbID+'_label')) { lblObj.innerHTML = pgbValue + '%'; // change t

來源:模板無憂//所屬分類:AJAX教程/更新時間:2010-01-30
相關AJAX教程
成人一级生活片| 久热爱精品视频线路一| 国产精品一区二区三区四区五区| 成人欧美精品一区二区| 五月婷婷免费视频| 午夜亚洲福利在线老司机| 欧美日韩激情美女| 日韩免费中文字幕| 狠狠操狠狠干视频| 丰满熟妇人妻中文字幕| 水蜜桃久久夜色精品一区的特点 | 在线影视一区二区三区| 国产欧美一区二区三区久久人妖 | 国产电影一区| 成人免费电影视频| 亚洲视频在线视频| 久久国产精品免费观看| 国产情侣自拍av| 99精品美女| 午夜久久久久久电影| 国产精品久久久久久久久久99 | 91视频xxxx| 久久久精品久久久久| 日韩在线综合网| 一级黄色片免费| 99在线观看免费视频精品观看| 精品视频资源站| 国产欧美在线一区二区| 91免费在线看片| 欧美国产不卡| 亚洲欧美另类小说| 国产精品www网站| 精品久久久久久无码人妻| 欧美在线se| 久久这里只有精品6| 欧美大片va欧美在线播放| 免费裸体美女网站| 天天干天天操av| 国产不卡视频在线观看| 日韩在线观看免费高清| 成年人观看网站| 成人午夜免费在线观看| 精品亚洲欧美一区| 在线a欧美视频| 国产视频九色蝌蚪| 北条麻妃一二三区| 精品一区二区三区香蕉蜜桃| 亚洲欧美日韩成人| 青青艹视频在线| 黄色美女一级片| 国产精品一区二区久激情瑜伽| 在线激情影院一区| 男人亚洲天堂网| 天天干天天爱天天操| 成人精品视频网站| 色综合久综合久久综合久鬼88| 亚洲一级免费观看| 97精品国产综合久久久动漫日韩| 91丨porny丨在线| 91成人天堂久久成人| 白嫩情侣偷拍呻吟刺激| 国产成人一二片| 亚洲国产精品麻豆| 国产伦精品一区二区三| 国产一级片播放| 伊人精品在线| 亚洲成年人在线| av女优在线播放| 日韩一级免费视频| 91欧美一区二区| 欧美伊久线香蕉线新在线| 亚洲一区二区三区四区五区六区| 秋霞影视一区二区三区| 精品高清美女精品国产区| 国产一区二区在线网站| 黄色片免费观看视频| 天堂成人国产精品一区| 伊人青青综合网站| 久久久久久久久久一区二区| 国产精品一区二区三区av| 亚洲黄色在线视频| 91成人理论电影| 国产在线观看免费av| 亚洲色诱最新| 亚洲欧美综合另类中字| 91视频这里只有精品| 久久久国产精品入口麻豆| 亚洲制服欧美中文字幕中文字幕| 粉嫩av免费一区二区三区| 六月丁香在线视频| 奇米在线7777在线精品| 久久精品在线视频| 四虎永久免费观看| 国模吧精品视频| 69堂亚洲精品首页| 精品少妇在线视频| 一区在线影院| 一区二区免费视频| 日本一区二区三区www| 夜夜狠狠擅视频| 成人免费观看视频| 日本精品久久久久影院| 日韩av毛片在线观看| 欧美日韩国产欧| 亚洲色图校园春色| 1314成人网| 国产精品欧美在线观看| 91麻豆精品国产91久久久使用方法 | av永久不卡| 91精品麻豆日日躁夜夜躁| 国产va亚洲va在线va| 91精品美女| 亚洲国产精品麻豆| 亚洲一区二区精品在线观看| 亚洲欧美黄色片| 久久久久久久国产精品影院| 亚洲一区二区三区四区在线播放| 国产成人一级片| 国产不卡高清在线观看视频| 国产精品久久久久久av| 免费日韩一级片| 国产福利91精品一区二区三区| 日本人成精品视频在线| 久久久久亚洲av片无码下载蜜桃| 青草av.久久免费一区| 国产91av在线| 欧美日韩中文视频| 国产综合久久久久久久久久久久 | 亚洲午夜国产成人| 色综合 综合色| 日韩精品一区二区免费| 亚洲精品一区二区在线播放∴| 午夜视频一区二区三区| 国产又爽又黄ai换脸| 婷婷视频在线观看| 亚洲国产精品精华液网站| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 日韩一区二区三区在线观看视频| 亚洲精品五月天| 亚洲一区二区在线观| 在线国产成人影院| 精品国产999| 97干在线视频| 9l视频自拍九色9l视频成人| 91精品蜜臀在线一区尤物| 久久国产这里只有精品| 欧美综合视频| 一区二区三区无码高清视频| 蜜臀av一区二区三区有限公司| 亚洲国产高清一区| 久久久久久久久久久久久久久久久久av| 国产精品国产三级国产传播| 免费欧美在线视频| 国产美女被下药99| 在线观看中文字幕av| 欧美极品少妇xxxxⅹ高跟鞋| 日本视频一区二区在线观看| 成人性生活av| 欧美性猛交xxxx乱大交3| 3d动漫一区二区三区| 久久精品国产亚洲5555| 亚洲第一级黄色片| 在线观看国产免费视频| 亚洲男女自偷自拍| 5566成人精品视频免费| 日韩久久中文字幕| 国产人久久人人人人爽| 亚洲午夜在线观看| 精品国产三级| 精品国产免费人成在线观看| 日韩无码精品一区二区| 一区二区三区成人精品| 欧美有码在线视频| 国产亚洲久一区二区| 中文字幕在线不卡一区二区三区 | www.av毛片| 亚洲人亚洲人色久| 中文字幕亚洲欧美一区二区三区 | 韩国午夜理伦三级不卡影院| 91色琪琪电影亚洲精品久久| 精品国产亚洲av麻豆| 亚洲国产精品久久一线不卡| 日韩中文字幕三区| 成人激情视频| 欧美xxxx做受欧美.88| 久久精品国产亚洲av无码娇色| av福利精品导航| 视频一区二区综合| 日韩欧美高清一区二区三区| 日韩高清不卡av| 精品人妻一区二区三区蜜桃视频| 精品一区二区三区蜜桃| 国产亚洲欧美另类一区二区三区| 亚洲a∨精品一区二区三区导航| 欧美日韩一区二区三区高清| 1314成人网| 久久精品国产清高在天天线| 91精品久久久久久久久| 人人妻人人澡人人爽人人欧美一区| 一本一道综合狠狠老| 五月花丁香婷婷| 亚洲激精日韩激精欧美精品| 国产精品网址在线| 人妻少妇精品无码专区| 欧美日免费三级在线| 国产国语老龄妇女a片| 日韩精彩视频在线观看| 99在线高清视频在线播放| 欧美xxxxxx| 欧美成人国产一区二区| 久久久久久久毛片| av午夜一区麻豆| 在线国产99| 亚洲黄页在线观看| 欧美人与性动交a欧美精品| 99久久久久久久久| 亚洲自拍偷拍欧美| www.cao超碰| 老司机午夜精品视频在线观看| 99久久精品无码一区二区毛片| 在线日本欧美| 日韩h在线观看| 岛国毛片在线观看| 国产精品美女一区二区在线观看| 成人在线观看你懂的| 五月激情久久久| 日韩av三级在线观看| 亚洲va欧美va| 日韩视频一区在线观看| 日本美女bbw| 久久久噜噜噜久噜久久综合| 久久久久久久久久伊人| 久久久久久久久丰满| 国产成人综合精品| 最新中文字幕在线播放| 亚洲成年人在线播放| 国产极品国产极品| 国产精品福利一区二区三区| 91蝌蚪视频在线观看| 香蕉av777xxx色综合一区| 国产伦精品一区二区三区免| 日韩中文在线| 欧美另类老女人| 国产老女人乱淫免费| 3atv一区二区三区| 中文字幕观看av| 亚洲欧美综合色| 波多野结衣xxxx| 韩国精品一区二区| 男女h黄动漫啪啪无遮挡软件| 午夜av一区| 91精品久久久久久久久青青| 精品国产黄a∨片高清在线| 在线观看成人黄色| 最好看的日本字幕mv视频大全| 色久综合一二码| 性欧美一区二区| 国产精品高潮呻吟久久| 最新国产黄色网址| 国模无码大尺度一区二区三区| 一区二区视频在线播放| 久久精品一区二区不卡| 999视频在线免费观看| jizz性欧美23| 91产国在线观看动作片喷水| 成人福利视频| 在线日韩日本国产亚洲| 伊人亚洲综合网| 8v天堂国产在线一区二区| 蜜臀久久精品久久久用户群体| 亚洲美女偷拍久久| 久久久久亚洲av成人网人人软件| a级高清视频欧美日韩| 精品一区二区中文字幕| 免费高清视频精品| 五月天色婷婷综合| 一本色道久久综合| 欧美在线播放一区| 91精品国偷自产在线电影| 91精品国产99久久久久久红楼| 久久电影在线| 国产精品入口尤物| 一区二区三区免费在线看| 91精品国产精品| 欧美大片网站| 欧美国产极速在线| 在线国产成人影院| 欧美片一区二区三区| 欧美香蕉视频| 久久精品中文字幕免费mv| 人妻无码中文字幕| 最新的欧美黄色| 性生活免费网站| 亚洲欧美日韩直播| 国产精品一区二区人人爽| 日韩成人在线播放| 亚洲一级av毛片| 日韩电影中文字幕在线观看| 中文字幕一二三四| 亚洲精品美女久久| 在线观看毛片网站| 日韩av在线不卡| 亚洲怡红院av| 亚洲激情视频在线| 97人妻一区二区精品免费视频| 亚洲国产中文字幕在线观看| 中文字幕视频在线播放| 日韩高清av一区二区三区| 国产精品一区二区免费视频 | 久久精品国产电影| 午夜av免费观看| 久久精品成人动漫| 国产综合色区在线观看| 久久久久久12| 精品久久国产一区| 国产精品免费网站| 亚洲ab电影| 春色成人在线视频| 亚洲v在线看| 日本午夜精品电影| 亚洲精选一区| 永久免费看av| 麻豆精品新av中文字幕| 国模无码视频一区二区三区| 国产精品一区专区| 国内外成人免费在线视频| 久久久99精品久久| 黄色污在线观看| 亚洲国产综合人成综合网站| 日韩三级久久久| 欧美三级蜜桃2在线观看| 国产毛片aaa| 亚洲国产精品va在线| 国产黄a三级三级看三级| 菠萝蜜影院一区二区免费| 精品网站在线| 欧洲中文字幕国产精品| 日本欧美韩国国产| 精品国产日本| 亚洲视频二区| 黄色片网址在线观看| 成人中文字幕电影| 国产在线a视频| 亚洲精品免费在线| 丁香花五月激情| 日韩欧美激情四射| www.国产麻豆| 久久久久久久久久av| 福利在线一区| 国产伦理一区二区三区| 日韩一级免费| 啊啊啊一区二区| 91麻豆文化传媒在线观看| aaaaaav| 色老综合老女人久久久| 波多野结衣午夜| 国产亚洲欧美另类中文| 福利视频亚洲| 91久久久在线| 欧美黄污视频| 丁香六月激情婷婷| 91丨九色丨国产丨porny| 亚洲做受高潮无遮挡| 欧洲精品一区二区| 亚洲视频久久久| 久久综合久久88| 这里视频有精品| 加勒比在线一区二区三区观看| 国产一区二区三区成人欧美日韩在线观看 | 国产精品一区二区不卡视频| 在线日韩中文| 欧美v在线观看| 国产精品欧美久久久久无广告| 国产ts在线播放| 欧美日韩不卡一区| 亚洲AV无码精品自拍| 2021国产精品视频| 成人同人动漫免费观看| 伊人久久大香线蕉av一区| 国产成都精品91一区二区三| 国产十八熟妇av成人一区| 日本韩国欧美国产| 一本色道久久综合无码人妻| 欧美大片在线看| 综合干狼人综合首页| 91香蕉视频网址| 波多野结衣中文一区| 亚洲一二三四视频| 精品日产卡一卡二卡麻豆| 欧美极品影院| 成人性生交大片免费看视频直播| 黑人一区二区三区四区五区| 成年人黄色片视频| 亚洲美女屁股眼交| 国产一级做a爱片久久毛片a| 中文字幕精品一区久久久久| **爰片久久毛片| 日韩欧美在线一区二区| 国产成人午夜精品5599| 国产精品密蕾丝袜|