《JavaScript忍者秘籍》——2.3 測試框架
本節書摘來自異步社區《JavaScript忍者秘籍》一書中的第2章,第2.3節,作者:【美】John Resig(萊西格) , Bear Bibeault(貝比奧特) 譯者: 徐濤 更多章節內容可以訪問雲棲社區“異步社區”公眾號查看。
2.3 測試框架
測試套件應該作為基本開發流程的一部分,所以應該選擇一個非常適合自己代碼風格和代碼庫的測試套件。一個JavaScript測試套件應該滿足一個唯一需求:顯示測試的結果,以便很容易地確定哪些測試通過的,哪些是失敗的。測試框架可以幫助我們達到這一目標,除了創建測試並將其組織到測試套件中以外,不用再擔心別的事情。
根據測試的需要,我們可以從JavaScript測試框架中找到很多功能。其中一些功能包括:
能夠模擬瀏覽器行為(單擊按鍵等)。
測試的交互式控製(暫停和恢複測試)。
處理異步測試超時問題。
能夠過濾哪些會被執行的測試。
一項非正式的調查,試圖統計人們在日常開發過程中使用哪種JavaScript測試框架,其結果非常具有啟發性。圖2.5描述的令人沮喪的事實是,很多人根本不測試。通常情況下,大家會很容易認為非測試人員的比例實際上是更高的。
另一個從該結果得出的觀點是,絕大多數的腳本編寫者,在編寫測試用例時都選擇如下四個工具中的一個:JsUnit、QUnit、Selenium以及YUI Test。測試工具的前十大“贏家”,如圖2.6所示。
這是一個有趣的結果,其表明沒有一個有絕對優勢的測試框架。但更有趣的是有相對較少用戶的一次性框架的數量,如圖2.6所示。
應該注意的是,從頭開始編寫一個測試框架是很容易,如果要更好地理解一個測試框架是如何實現的,這是一個好辦法。這是一個特別有趣的練習,因為在編寫一個測試框架時,我們通常是要處理純JavaScript,而無需過多擔心跨瀏覽器的問題。除非我們想模擬瀏覽器事件,如果是這樣(盡管我們將在第13章解決這個問題)祝你好運!
根據圖2.6顯示的結果,許多人得出同樣的結論,並編寫了大量的一次性框架以適應自己的特殊需要。雖然可以編寫一個專有的單元測試框架,但很有可能我們想用的是預先構建的框架。
一般的JavaScript單元測試框架會提供一些基本組件:一個測試運行器、測試分組以及斷言。還有一些測試框架提供了異步運行測試的功能。讓我們簡要看一些最受歡迎的單元測試框架。
2.3.1 QUnit
QUnit最初是用於測試jQuery的單元測試框架。它的發展已經超出其最初的目標,目前是一個獨立的單元測試框架。QUnit主要是為單元測試提供一個簡單的解決方案,提供最小但卻易於使用的API。
QUnit的特點如下:
簡潔的API。
支持異步測試。
不限於jQuery或使用jQuery的代碼。
特別適合於回歸測試。
2.3.2 YUI Test
YUI Test是Yahoo !構建並開發的測試框架,於2008年10月發布。為了配合YUI3的發布,2009年YUI Test被完全重寫。YUITest提供了大量的特性和功能,以確保覆蓋代碼庫所需要的任何單元測試用例。
YUI Test的特點如下:
- 廣泛和全麵的單元測試功能。
支持異步測試。
良好的事件仿真。
2.3.3 JsUnit
JsUnit是流行的Java JUnit測試框架在JavaScript語言上的實現。盡管它仍然是最流行的JavaScript單元測試框架之一,但也是最古老的(無論是代碼年齡還是代碼質量)。該框架最近沒有進行太多更新,所以要測試大家熟知的現代瀏覽器的代碼,JsUnit可能不是最好的選擇。
2.3.4 新出的單元測試框架
根據JUnit的主頁信息,Pivotal Labs團隊現在正專注於一個名為Jasmine的新測試工具
另外一個需要了解的測試工具是TestSwarm,一個分布式的持續集成測試工具,最初由John Resig開發,目前已成為Mozilla實驗室的一部分:
接下來,我們要看一看如何創建測試套件。
最後更新:2017-06-06 07:36:37