JavaScript單元測試框架介紹

什麼是單元測試

在計算機編程中,單元測試(又稱爲模塊測試)是針對程序模塊(軟件設計的最小單位)來進行正確性檢驗的測試工作。程序單元是應用的最小可測試部件。在過程化編程中,一個單元就是單個程序、函數、過程等;對於面向對象編程,最小單元就是方法,包括基類(超類)、抽象類、或者派生類(子類)中的方法。

每個理想的測試案例獨立於其它案例;爲測試時隔離模塊,經常使用stubs、mock 或fake等測試馬甲程序。單元測試通常由軟件開發人員編寫,用於確保他們所寫的代碼符合軟件需求和遵循開發目標。Wiki上關於單元測試的詳細介紹

JavaScript單元測試現狀

單元測試在後臺開發中非常流行和普及,比如JAVA開發者的JUnit等,而在前端開發中則使用的非常少。究其原因,主要是單元測試更適用於邏輯代碼的測試,這對於JAVA等後臺編程語言來說測試起來非常方便,但是前端開發很多時候要要UI打交道,UI相關的代碼不是不可以進行單元測試,但的確很麻煩,比起邏輯代碼來說困難多了,這就導致了單元測試在前端開發沒有普及起來。

但是隨着單元測試的普及,尤其是敏捷開發的推動,湧現了許多優秀的JavaScript單元測試框架,見詳細列表。所有的這些框架基本上都能對Javascript代碼進行很好的測試,當然UI部分的代碼測試一樣比較麻煩,但是我們可以通過精心構造我們的測試代碼來測試部分UI代碼。但是每個框架都不是萬能的,它們都有各自擅長的領域,下面我就選取了幾個具有代表性的框架進行介紹。

QUnit框架介紹

QUnit是jQuery團隊開發的JavaScript單元測試工具,目前所有的JQuery代碼都使用QUnit進行測試,並且JQuery開發團隊將他們的使用QUnit寫的測試代碼都發布出來了,光憑這一點就足以QUnit的強大,足以勝任大部分JavaScript單元測試。

QUnit的優點:

  • 使用起來非常方便,有漂亮的外觀和完整的測試功能(包括異步測試),這是見過最漂亮最詳細的測試界面了。
  • 非常簡單,容易上手,目前公開的APi只有16個。
  • 不需要依賴其它任何軟件包或框架,只要能運行JS的地方就可以,QUnit本身只有一個JS文件和CSS文件,當然如果需要可以和JQuery等其它框架集成。
  • 不僅支持在瀏覽器中測試,還支持在Rhino和node.js等後端測試。

QUnit的缺點:

  • 對自動化支持不好,很難和Ant/Maven或自動構建等工具集成,主要用在瀏覽器中進行測試。

QUnit教程

Jasmine框架介紹

Jasmine是一個有名的javascript單元測試框架,它是獨立的行爲驅動開發框架,提供了對JavaScript開發者來說相對容易使用的測試語法,可以幫助你輕鬆寫出自己的單元測試代碼。

Jasmine的優點:

  • 它是基於行爲驅動開發實現的測試框架,它的語法非常貼近自然語言,簡單明瞭,容易理解。
  • 能很方便的和Ant/Maven等進行集成進行自動化測試,也可以方便和Jekins等持續集成工具進行集成,可以生成測試結果的XMl文檔。
  • 它有豐富的API,同時用戶也支持用戶擴展它的API,這一點很少有其它框架能夠做到。
  • 使用方便簡單,只需要引入兩個js文件即可
  • 不僅支持在瀏覽器中測試,還支持在Rhino和node.js等後端測試。
  • 對於Ruby語言有特別的支持,能夠非常方便的集成到Ruby項目中去

Jasmine的缺點:

  • 在瀏覽器中的測試界面不如QUnit美觀,詳細。

Jasmine教程

JsTestDriver框架介紹

JsTestDriver是一個JavaScript單元測試工具,易於與持續構建系統相集成並能夠在多個瀏覽器上運行測試輕鬆實現TDD風格的開發。當在項目中配置好js-test-driver以後,如同junit測試java文件一般,js-test-driver可以直接通過直接運行js文件,來對js文件單元測試。JsTestDriver框架本身就是JAVA的jar包,需要在本地運行並監聽一個端口。

JsTestDriver的優點:

  • 可以一次測試多個瀏覽器,使用方法是在啓動服務時可以將多個瀏覽器的路徑作爲參數傳進去。
  • 能很方便的和Ant/Maven等進行集成進行自動化測試,也可以方便和Jekins等持續集成工具進行集成,可以生成測試結果的XMl文檔。
  • 有Eclise和IntelliJ插件,可以很方便的在這兩個IDE中進行測試,和JUnit很像。
  • 支持其它測試框架,可以測試其它測試框架寫的測試代碼,比如有對應的插件可以將QUnit和Jasmine測試代碼轉換成JsTestDriver的測試代碼

JsTestDriver的缺點:

  • 不能在瀏覽器中進行測試,只能通過自動化工具或控制檯進行運行。生成的結果不夠直觀
  • 安裝使用稍微有點麻煩,依賴於JAVA環境

JsTestDriver教程

其它測試框架

除了以上提到的三個框架意外,還有好多其它測試框架,在這裏也做個簡單的介紹:

  • JsUnit框架是最早也是最出名的一個前端單元測試框架,但現在已經停止維護了,建議不要再使用了。
  • Yahoo Test和Yahoo Yeti主要是針對Yahoo YUI框架進行測試。
  • google-js-test主要是針對chrome V8 JS引擎進行測試。
  • FireUnit是Firebug的一個插件,是一個比較簡單的測試工具。
  • 更多測試框架

總結

  • QUnit框架簡單方便,測試界面直觀詳細,建議優先選擇QUnit框架,當然Jasmine也是個不錯的選擇。
  • 如果需要進行自動化測試,JsTestDriver和Jasmine都很好的支持自動化測試。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章