最近一直在做nodejs,而關於js的單元測試覆蓋率網上資料比較少而且吧比較零散,我從網上找來一些資料整理一下分析給大家,希望大家可以少走彎路。
首先我是從windows環境下測試的,用到的工具有
mocha,一個js的測試工具,如果你是已經安裝了npm包管理工具,那么直接 npm install mocha -g就可以了,你可以在任何路徑使用mocha命令進行測試
should是一個還不錯斷言庫(斷言庫就是一些使用習慣,實質沒有不同),具體用法就直接上代碼了。
同樣npm install should即可下載should庫
var Vehicle = (function () { function Vehicle(vType) { this.initCar(vType); this.distance = 100000; } Vehicle.prototype.initCar = function (vType) { switch(vType) { case "car": this.weight = 20; this.force = 20; break; case "van": this.weight = 60; this.force = 30; break; case "roadster": this.weight = 15; this.force = 30; break; default: this.weight = -1; this.force = -1; break; } }; Vehicle.prototype.getAcceleration = function () { return (this.force / this.weight); }; return Vehicle; })(); exports.Vehicle = Vehicle;
Mocha測試用例
var V = require("./Vehicle") var should = require("should"); describe("Vehicle", function () { describe("#getAcceleration", function () { it("should return an right result", function () { var vvv = new V.Vehicle("car"); vvv.getAcceleration().should.equal(1); }); it("should return an right result", function () { var vvv = new V.Vehicle("van"); vvv.getAcceleration().should.equal(0.5); }); it("should return an right result", function () { var vvv = new V.Vehicle("roadster"); vvv.getAcceleration().should.equal(2); }); }); });
OK全部通過了,下一步,下載測試覆蓋率的工具jscoverage,在這里http://siliconforks.com/jscoverage/download.html選擇一個windows版本下載,放到你的工作目錄里
在這里說說jscoverage的原理就是把你的代碼每一個邏輯路徑都插入一個檢查點,當你的代碼運行到那個路徑的時候會在計數器里加1,多次運行那段的代碼便一直累加上去。
在后在你的工作目錄運行 jscoverage ./src ./test --no-highlight 注意后面那個參數--no-highlight必須得加,否則后面mocha生成report時你會發現一團糟(不信你試試)
執行后,進入./test這個目錄,你會發現插入檢查覆蓋代碼生成后的js文件,還多出了jscoverage的js和html兩個文件,這兩個不用管,我們直接用mocha生成報告。
在cd ./test后,執行上面這行命令(如果你的mocha不帶指定的文件名,他會把目錄下的test子目錄或目錄下的test.js執行),如果執行成功,馬上就會多出report.html這個文件
這里比較神奇的是,mocha會自動識別這個生成后的js文件(竟然知道能檢查覆蓋率)並生成html文檔,對於這一點我一直不解....求高手解答
打開report.html,出來了。。。。。覆蓋率91%
這里是windows下的,明天寫一個linux下使用jscoverage和使用mocha的報告