WIKI使用導航
站長百科導航
站長專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機
- cPanel
- 網(wǎng)址導航專題
- 云計算
- 微博營銷
- 虛擬主機管理系統(tǒng)
- 開放平臺
- WIKI程序與應用
- 美國十大主機
Ajax- 分析JsUnit 之運行測試
導航: 上一頁 | ASP | PHP | JSP | HTML | CSS | XHTML | aJAX | Ruby | JAVA | XML | Python | ColdFusion
你已經(jīng)寫了一些測試,下面需要運行它們,為此可以使用JsUnit測試運行工具。你已經(jīng)看到啟動測試運行工具的許多例子,不過這是怎么做到的呢?為了訪問這個運行工具,要把瀏覽器指向jsunit文件夾中的testRunner.html文件。這個測試運行工具如圖6-12所示。
這個測試運行工具非常類似于JUnit中常用的圖形化運行工具。(不過,有意思的是,我們期盼已久的JUnit 4并沒有包括圖形測試運行工具,而且以后也不會增加。)要運行一個測試,可以點擊Choose File(選擇文件),來選擇要運行的文件。不出所料,在測試運行工具發(fā)現(xiàn)失敗之前,進度條一直是綠的,如圖6-13所示。Runs字段指示測試函數(shù)的總數(shù),還可能報告錯誤或失敗。
圖6-13 成功運行的JsUnit測試運行工具
錯誤(error)來自瀏覽器,指示測試頁出現(xiàn)了某個問題,失?。╢ailure)指示你的某個斷言失敗。特定的錯誤或失敗會顯示在Errors and Failures文本框中。要了解一個錯誤或失敗的更詳細的信息,可以雙擊相應測試函數(shù)。或者,選中這個測試函數(shù),再選擇Show Selected。如果是失敗,就會出現(xiàn)一個警告,顯示出期望值和實際值,另外還會顯示你在斷言中增加的所有消息。如果看到一個錯誤,相應的消息(可能)會幫助你縮小查找的范圍,更快地找到問題所在。
下面再來看展示setUp()和tearDown()函數(shù)的例子,對這個例子做一個小小的調(diào)整。在addNumbers()函數(shù)中故意增加一個錯誤,試圖獲取一個不存在的元素,如代碼清單6-10所示。
代碼清單6-10 故意增加的一個錯誤
function addNumbers() {
//arg1 doesn't exist!
var val1 = document.getElementById("arg1").value;
var val2 = document.getElementById("value2").value;
return addTwoNumbers(val1, val2);
}
運行這個測試,可以想像到,會得到一個紅條!注意Errors and Failures文本框中顯示了一個錯誤(見圖6-14)。
圖6-14 JsUnit測試運行工具錯誤
通過進一步觀察,可以看到如圖6-15顯示的詳細信息。由此得知,arg1沒有任何屬性,你應該查查addNumbers()方法來看發(fā)生了什么問題。
圖6-15 錯誤詳細信息
在運行工具中,失敗看上去都是一樣的(都會得到一個紅條),但是詳細信息不同。如果你熟悉JUnit,會發(fā)現(xiàn)這里的失敗信息看上去非常熟悉。下面再回到simpleJS.js文件的測試。假裝你希望 2 + 2 等于 5,如代碼清單6-11所示,來看看會發(fā)生什么。
代碼清單6-11 另一個故意的錯誤
function testValidArgs() {
assertEquals("we really do know that 2 + 2 is 4", 5, addTwoNumbers(2, 2));
}
不出所料,測試運行工具會顯示一個紅條,但是提供詳細信息的警告有所不同,見圖6-16。
圖6-16 JsUnit 測試運行工具失敗
失敗的詳細信息很有幫助,如圖6-17所示??梢钥吹侥阍跀嘌院瘮?shù)中鍵入的所有消息,會得到期望值和實際值,還會得到一個棧軌跡,顯示出哪里出現(xiàn)了失敗。
以上基本上介紹了測試運行工具中的所有字段,只有兩個字段還沒有談到:Page Load Timeout(頁面加載超時)和Setup Page Timeout(建立頁面超時)。Page Load Timeout字段是指測試運行工具對于你的測試頁有多耐心,如果你的測試頁需要的時間比這個框中指定的時間(以秒為單位)長,測試運行工具就會拋出一個錯誤,如圖6-18所示。如果看到這個錯誤,就要確保你的測試頁確實是一個測試頁。(換句話說,要保證它包含了jsUnitCore.js文件,而且要確保路徑語句是正確的,另外如果是跨網(wǎng)絡訪問頁面,還要保證可以得到這個頁面)。當然,如果你在做分布式測試,測試需要的時間就會比較長,這時可能需要增加Page Load Timeout字段中的時間。
點擊OK時,可能會提示你重試或取消這一次測試,如圖6-19所示。
Setup Page Timeout字段是類似的,但是只有當你使用了setUpPage()函數(shù)時才適用。它表示了JsUnit測試運行工具等待setUpPage()函數(shù)結(jié)束的時間(同樣以秒為單位)。不要忘了,如果測試頁有一個setUpPage()函數(shù),測試運行工具會一直等待,直到setUpPageStatus變量置為complete??梢韵胂竦剑瑴y試運行工具會通知你發(fā)生了一些意想不到的事情,如圖6-20所示。
類似于頁面加載超時,此時你也有機會重試或取消。這很有可能說明你忘了告訴JsUnit:你的setUpPage()函數(shù)已經(jīng)完成。如果確實已經(jīng)將setUpPageStatus變量置為complete,可能得查看一下在setUpPage()函數(shù)里做了些什么。你可能需要增加Setup Page Timeout字段的設置值,或者想辦法加快建立頁面的速度。