nodejs 中使用 mocha + should + jscoverage 生成 單元測試覆蓋率報告


最近一直在做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的報告

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM