最近在用 Jasmine 給 KISSY 項目添加測試代碼,遇到一個困惑:如何保證測試能完整覆蓋到源碼的所有分支?
用 Google 搜索了下 JavaScript Coverage 工具,琳瑯滿目。有商業版的 JavaScript Coverage Validator, 還有 FireBug 的不少擴展 JavaScript Code Coverage Tool for Firebug. 美中不足是,這些要么要花錢,要么已停止更新,杯具。
最后將目標鎖定到免費開源一直更新的:JSCoverage. 不用不知道,一用立刻相見恨晚。下面簡單介紹下。
下載安裝非常簡單,到 這里 下載 window 版本。完成后,將壓縮包里的 jscoverage.exe 復制到 C:\Windows\System32. 安裝完畢。
我們以 cookie 模塊為范例。命令行模式,在 cookie 的上級目錄 src 下輸入:
jscoverage.exe cookie cookie_ --encoding=utf-8 --no-instrument=tests
運行后,就會生成 cookie_ 目錄。原理是將需要檢測的 js 文件重新編譯,分析原始語句,并插入相應的監測代碼。有興趣的可以打開 cookie_/cookie.js 文件觀摩。
--no-instrument=tests 是告訴 jscoverage 不要理會 tests 目錄下的 js 文件。tests 目錄下存放的是 Jasmine 測試文件,不需要監測。
接下來,在瀏覽器中通過服務器瀏覽就可以了: cookie_/jscoverage.html
在打開的頁面中,點擊 Summary, 可以看到:
非常清晰:cookie.js 的測試覆蓋率為 91%, 點擊 cookie.js 切換到 Source Tab, 可以具體看到哪些代碼行沒有執行。
一切就這么簡單。利用 jscoverage-server.exe, 還可以生成報告,這里就不細說了,具體請看 JSCoverage User Manual.
有了 Jasmine, 讓我們可以大膽重構代碼和添加新功能。
有了 JSCoverage, 則讓我們對 Jasmine Specs 的覆蓋率有了全局掌握,可以隨心所欲。
希望這篇文章,能讓你對 JS Test Coverage 工具有個初步了解。好了,繼續干活。
原文轉自:http://blogread.cn/it/article/3055?f=wb