欧美三区四区_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教程
五月天婷婷影视| 精品91自产拍在线观看一区| 91av在线网站| 鲁一鲁一鲁一鲁一澡| 动漫精品一区一码二码三码四码| 亚洲一区二区三区日本久久九| 紧缚奴在线一区二区三区| 欧美三级三级三级爽爽爽| 国产91热爆ts人妖在线| 在线免费视频a| 亚洲综合精品在线| 精品久久91| 国产精品国产a| 欧美成人在线影院| 日韩欧美精品免费| 久久久久久少妇| 欧美日韩在线二区| 国产精品久久久久7777按摩| 欧美成在线观看| 久久综合久久网| 精品国产一区二区三区四| 精品视频黄色| 亚洲免费高清视频在线| 国内精品久久久久久影视8| aa在线免费观看| 一级片在线观看视频| 欧美久久九九| 欧美日韩一区二区三区 | 免费无码毛片一区二三区| 中文字幕在线观看免费视频| 欧洲grand老妇人| 亚洲美女免费在线| 欧美一级视频一区二区| 亚洲精品第三页| 天天综合网在线观看| 久久国产视频网| 亚洲第一区中文99精品| 欧美日韩精品一区| 国产高清在线免费观看| 久久不见久久见免费视频7| 国产精品入口麻豆九色| 久久久久久久久久国产| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 99在线精品视频免费观看20| 蜜桃av综合| 宅男噜噜噜66一区二区66| 激情视频在线观看一区二区三区| 阿v天堂2014| 91麻豆精品国产91久久久久推荐资源| 2023国产精品| 免费av一区二区| 亚洲视频在线a| 风流少妇一区二区三区91| 日韩黄色免费电影| 亚洲精品一区二区三区香蕉| 亚洲欧洲久久| 天堂中文在线网| 欧美午夜不卡| 337p亚洲精品色噜噜| 美女视频久久| 精品一区在线视频| 亚洲a一区二区三区| 欧美色视频日本版| 鬼打鬼之黄金道士1992林正英| 亚洲一二三四视频| 精品福利网址导航| 亚洲欧美日韩国产中文在线| 国产精品高潮呻吟视频| 日本黄色网址大全| 久久国产精品免费精品3p| 亚洲精品成人精品456| 国产精品狠色婷| 国产av自拍一区| 日韩av网址大全| 亚洲18女电影在线观看| 亚洲综合一区二区不卡| 91香蕉视频网| 午夜激情久久| 在线成人av网站| 亚洲一区精品视频| 国产成人精品一区二区色戒| 久久一日本道色综合久久| 日韩av在线网址| 少妇高潮毛片色欲ava片| 亚洲国产成人在线观看| 成人亚洲一区二区一| 色综合久久精品亚洲国产| 无套内谢丰满少妇中文字幕| 国产精品日本一区二区三区在线| 国产精品久久综合| 国产欧美中文字幕| 中文字幕美女视频| 亚洲mv大片欧洲mv大片| 欧美一区二区三区四区久久| 欧美性受黑人性爽| 亚洲精品成人区在线观看| 成人午夜激情视频| 97久久精品视频| 亚洲熟妇一区二区三区| 欧美色婷婷久久99精品红桃| 欧美视频精品在线观看| 亚洲一区二区精品在线| 国产又大又黑又粗| 国产成人午夜99999| 欧美福利视频在线观看| 日韩成人av影院| 全国精品免费看| 欧美性猛交99久久久久99按摩| 欧洲精品码一区二区三区免费看| 亚洲午夜无码久久久久| 国产伦精品一区二区三区视频青涩 | 日本丰满少妇一区二区三区| 欧洲一区二区日韩在线视频观看免费| 欧美日韩一级黄色片| 久久精品国产99国产精品| 欧美成年人在线观看| 水蜜桃av无码| 欧美一区电影| 欧美四级电影在线观看| 五月天在线免费视频| 大胆人体一区| 国产精品久久久久aaaa樱花 | 91精品国产综合久久香蕉| 一区二区国产精品精华液| 伊人影院久久| 中文字幕久热精品在线视频| 欧美性猛交乱大交| 婷婷国产精品| 欧美精品久久久久久久久老牛影院| 女人帮男人橹视频播放| 国产v综合v| 亚洲精品成人在线| 日韩成人在线资源| 精品人妻一区二区三区日产乱码| 久久久久久久久久久久久女国产乱| 成人黄色av网| www.国产com| 国产精品一卡二卡在线观看| 国产97在线观看| 久久久久久免费观看| 日本不卡123| 91地址最新发布| 小泽玛利亚一区二区免费| 免费在线日韩av| 超薄丝袜一区二区| 国内精品卡一卡二卡三| 伊人成人在线视频| 精品国产依人香蕉在线精品| 泷泽萝拉在线播放| 亚洲二区视频| 中文字幕av日韩| 日本特黄在线观看| 色天天久久综合婷婷女18| 亚洲精品久久久久久久久久久久 | 99九九热只有国产精品| 精品伊人久久97| 中文字幕亚洲日本| 手机在线一区二区三区| 亚洲视频在线免费观看| 中文字幕在线播放视频| 亚洲午夜激情在线| 欧美成年人视频| 午夜精品一区二区三级视频| 老汉av免费一区二区三区| 欧美中文在线观看| 在线观看 中文字幕| 粉嫩av一区二区三区在线播放| 成人av在线亚洲| 亚洲av无码精品一区二区| 99久久国产综合精品色伊| 草莓视频一区| 99草在线视频| 亚洲乱码国产乱码精品精可以看 | 精品大片一区二区| 亚洲精品国精品久久99热一| 秘密基地免费观看完整版中文| 欧美另类综合| 欧美精品免费在线观看| 三级av在线免费观看| 韩国三级在线一区| 国产专区欧美专区| 国产精品人人爽| 国产视频一区在线观看| 国产在线一区二区三区四区 | 九色综合国产一区二区三区| 国产精品久久久久久久久影视| 成人免费毛片视频| 欧美国产精品中文字幕| 四虎一区二区| 精品国产亚洲日本| 日韩欧美中文字幕公布| 日本wwwwwww| 欧美视频二区| 欧美老女人xx| 好吊色视频在线观看| 国产一区免费电影| 国产主播在线一区| 一级黄色片免费看| 自拍偷自拍亚洲精品播放| 色综合电影网| 久久亚洲人体| 538在线一区二区精品国产| 污污的视频免费观看| 国产精品chinese| 欧美激情a在线| 国产系列精品av| 久久五月婷婷丁香社区| 亚洲二区三区四区| 日韩精品一区二区三区中文| 日韩黄色在线免费观看| 日韩人妻无码精品综合区| 精品一区二区三区的国产在线播放 | 精品国产一区二区三区久久久狼| 亚洲熟女www一区二区三区| 国产呦萝稀缺另类资源| 91亚洲精品一区二区| 中文字幕在线直播 | 婷婷激情四射五月天| 欧美在线播放| 日本成人黄色片| 91精品国产乱码久久久久| 午夜精品久久久久| 欧美大尺度做爰床戏| 亚洲午夜黄色| 国产免费久久av| 手机看片一区二区| 欧美日韩1234| 国产人妖在线观看| 国产欧美日韩一级| 91久久精品国产91性色| 国产黄色一区二区| 五月婷婷综合在线| 密臀av一区二区三区| 午夜精品国产| 欧美一级大片在线观看| 天天干天天干天天干天天| 国产精品久久国产精麻豆99网站| 黄色国产一级视频| 麻豆一区二区麻豆免费观看| 国产亚洲精品va在线观看| 国产精品suv一区二区| 日韩毛片一二三区| av观看免费在线| 精品成人免费| 91香蕉电影院| 亚洲欧洲二区| 在线看日韩av| 欧美性猛交bbbbb精品| 一区二区国产视频| 日本免费色视频| 久久久久免费| 精品视频一区二区| 97久久超碰| 色综合久久中文字幕综合网小说| 91麻豆国产视频| 欧洲另类一二三四区| 欧美 日本 国产| 99国产麻豆精品| 欧洲精品一区二区三区久久| 女人色偷偷aa久久天堂| 茄子视频成人在线| 原纱央莉成人av片| 日韩精品免费看| 97久久久久久久| 福利一区福利二区微拍刺激| 亚洲视频在线播放免费| 成人精品一区二区三区四区 | 国产偷亚洲偷欧美偷精品| 久草成人在线视频| 亚洲欧美日韩精品久久久久| 精品亚洲视频在线| 九色porny丨国产精品| 在线视频亚洲自拍| 亚洲色图插插| 亚洲永久免费观看| 亚洲精品在线a| 欧美黑人性视频| 性生交大片免费看女人按摩| 精品欧美乱码久久久久久| 福利所第一导航| 午夜av区久久| 波多野结衣一本| 欧美高清在线视频| www一区二区www免费| 日韩精品视频网站| 五月天亚洲综合| 久久精品久久久| 国产精选久久久久久| 四虎国产精品免费久久| 久久综合伊人77777尤物| 亚洲精品久久久狠狠狠爱| 日韩av影视综合网| 国产成人无码一区二区在线播放| 在线观看日韩国产| 日日操免费视频| 亚洲亚洲精品在线观看| 一级国产黄色片| 国产精品天干天干在线综合| 日韩成人精品视频在线观看| 国产成人超碰人人澡人人澡| 国产免费观看高清视频| 一本色道久久| 久久人人97超碰人人澡爱香蕉| 四虎5151久久欧美毛片| 欧美综合第一页| 成人午夜精品| 久久精品中文字幕电影| 天堂在线视频观看| 中文字幕日韩综合av| 精品国产乱码久久久久久蜜臀网站| 亚洲а∨天堂久久精品喷水| 超碰超碰超碰超碰| 欧美福利视频导航| 国产午夜在线播放| 欧美日韩国产综合草草| 日韩av在线播| 欧美色大人视频| 国产大片aaa| 欧美色成人综合| 亚州国产精品视频| 欧美色爱综合网| 欧美bbbbbbbbbbbb精品| 欧美狂野另类xxxxoooo| 日韩三级av在线| 91精品国产入口| 无码一区二区三区在线观看| 日韩欧美三级在线| 亚洲午夜在线播放| 亚洲激情中文字幕| av老司机久久| 日韩黄在线观看| ,一级淫片a看免费| 精品呦交小u女在线| 亚洲AV无码精品色毛片浪潮| 尤物99国产成人精品视频| 国产自产一区二区| 久久香蕉频线观| 99久久亚洲国产日韩美女| 97国产精品视频| 日韩一区二区三区精品| 国产精品99久久久久久久久久久久 | 亚洲人视频在线| 久久综合九色综合97婷婷女人| 国产老头和老头xxxx×| 国产精品麻豆网站| 91视频在线网站| 亚洲一区中文在线| 四季av中文字幕| 欧美性videosxxxxx| 超碰中文字幕在线| 欧美精品一区二区三区视频| 99久久免费国产精精品| 日韩中文字幕国产| 色8久久影院午夜场| 2020国产精品视频| 久久综合五月婷婷| 国产精品美女999| 国产无遮挡裸体免费久久| 国产在线精品一区免费香蕉| 精品亚洲自拍| 成人动漫在线观看视频| 伊人情人综合网| 自拍偷拍99| 另类调教123区| 91欧美视频在线| 中文一区二区在线观看| 精品国产aaa| 在线国产亚洲欧美| 日本少妇毛茸茸高潮| 欧美一区二区久久久| 精品二区在线观看| 欧美激情第1页| 岛国精品一区| 黑人巨大精品欧美一区二区小视频 | 我不卡影院28| 一二三四中文字幕| 丁香亚洲综合激情啪啪综合| 97超碰免费在线观看| 一区二区三区精品视频在线| 日本a级片视频| 日韩精品在线一区| 免费观看黄色一级视频| 97在线免费观看视频| 五月综合久久| 秋霞在线观看一区二区三区| 日韩精品亚洲一区| 一级片视频免费观看| 久久久.com| 日韩人妻无码精品综合区| 欧美二区在线观看| 精品久久久无码中文字幕| 欧美精品成人91久久久久久久| 久久中文字幕导航| 奇米888一区二区三区| 精品一区二区国语对白| 久久久男人的天堂| 欧美性猛交xxxx黑人| 中文在线资源天堂| 久99九色视频在线观看| 婷婷亚洲成人|