不論你是在寫瀏覽器端javascript仍是後端的nodejs,總存在那麼一個問題:我該使用什麼單元測試庫去確保個人代碼如預期的運行呢?老是有那麼一些流行的框架可供選擇。若是你正在考慮Qunit、Jasmine或者Mocha,那麼剛好我這有一些他們的優缺點信息介紹,你可能感興趣。javascript
qUnit是我列舉出中最老的一個框架,08年正式發佈。因爲時間緣由,隨着時間積累了一些用戶。在Jquery中仍然流行,而且擁有來自許多地方性的支持。java
它發展的如何呢?真的不讓人滿意。node
特色npm
大量的支持,從Q&A到CI服務器支持後端
缺點瀏覽器
語法不流暢服務器
配置使人頭疼,必須持續維護框架
引入第三庫比較困難less
異步測試困難異步
No baked-in headless run support(待譯)
Jasmine是稍微新一點的框架,於qUnit發佈後的2年2010年發佈。這是一個有足夠時間成長的框架,然而仍要學習其餘javascript框架。它的初衷是易於安裝和適用於任何場景。大多數場景下,它的運行須要Karma或Chutzpah,除了一些發行版本(如jasmine-node npm)有內建的runner。
它的前景如何呢?對於你想要的大多數場景來講,它是很是棒的。異步代碼是主要的問題。
特色
對於node來講經過jasmine-node是很好安裝的
Headless running out of the box(待譯)
內置流暢漂亮的語法,完美兼容其它測試庫
有許多CI服務器(如TeamCityp,CodeShip等)和一些自己不支持插件的服務器支持
可描述性的BDD範例
缺點
異步測試有些麻煩
全部測試文件都有個確切的後綴(默認*spec.js)
Mocha專爲nodeJS的模塊構建,2012發佈重大版本。它的API與Jasmine很是像,多了一些語法糖去適用於更多的場景,如BDD。內建有runner,因此你不用操心runner了。與jasmine不一樣,它對異步代碼的測試有很好的支持,經過調用done函數。若是你的測試使用它,直到done調用了test才能經過。若是沒有調用它,當test方法的代碼執行完test才能經過。
我對它的印象是,很是適合我!
特色
易於安裝
Headless running out of the box
容許任何可以拋出失敗異常測試庫的使用
部分CI服務器和其它插件的支持
功能上更可能是面向行爲驅動開發或者行爲面向測試驅動開發
高擴展性
垂手可得的進行異步測試
缺點
較新的領域,部分領域缺乏支持