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

nodejs 中使用 mocha + should + jscoverage 生成 单元测试覆盖率报告的更多相关文章

  1. jacoco+maven生成单元测试覆盖率报告

    参考:https://www.petrikainulainen.net/programming/maven/creating-code-coverage-reports-for-unit-and-in ...

  2. 在jenkins和sonar中集成jacoco(二)--在jenkins中生成jacoco覆盖率报告

    先要在jenkins上安装jacoco的插件,安装完成之后在job的配置项中可以增加这个选项: 第一个录入框是你的覆盖率文件(exec),第二个是class文件目录,第三个是源代码文件目录. 配置好了 ...

  3. 由cobertura插件生成测试覆盖率报告

    由于cobertura已经集成到maven中,所以可以很方便的直接调用此插件生成报告: 直接运行命令:mvn cobertura:cobertura 就可以直接生成测试报告了. 下面是截图:

  4. sonarqube C# 单元测试覆盖率一栏总是0%解决办法

    一.什么叫单元测试(unit testing)? 是指对软件中的最小可测试单元进行检查和验证.对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函 数,Java里 ...

  5. [转载] JaCoCo:分析单元测试覆盖率的利器

    转载自http://www.ibm.com/developerworks/cn/java/j-lo-jacoco/和http://www.cnblogs.com/chenfengmugu/p/4937 ...

  6. maven单测生成覆盖率报告---Jacoco的使用

    JaCoCo介绍 一.JaCoCo简述 JaCoCo是一个开源的覆盖率工具,它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant.Maven中:可以作为Eclipse插件,可以使用其Java ...

  7. Jenkins 进阶篇 - 单元测试覆盖率

    我们做项目开发,肯定免不了要写单元测试,不管是 Java 项目.Python 项目.PHP 项目,甚至是 nodejs 项目,都应该要写单元测试,本小节就来介绍单元测试的覆盖率报告输出和展示,在后面的 ...

  8. 在Nodejs中贯彻单元测试

    在团队合作中,你写好了一个函数,供队友使用,跑去跟你的队友说,你传个A值进去,他就会返回B结果了.过了一会,你队友跑过来说,我传个A值却返回C结果,怎么回事?你丫的有没有测试过啊? 大家一起写个项目, ...

  9. 示例 - 如何在NodeJS中调用SS生成的DLL

    要想在NodeJS中调用SS生成的DLL, 需要借助EdgeJS. EdgeJS: http://tjanczuk.github.io/edge/ 如果你还不知道如何在SS中生成DLL, 请查看: S ...

随机推荐

  1. android4.0 的图库Gallery2代码分析(一)

    最近迫于生存压力,不得不给人兼职打工.故在博文中加了个求点击的链接.麻烦有时间的博友们帮我点击一下.没时间的不用勉强啊.不过请放心,我是做技术的,肯定链接没病毒,就是我打工的淘宝店铺.嘻嘻.http: ...

  2. UIStepper 缩放:UI的使用

    // 实现文件:声明在对应的.h文件.继承至UIViewControllor - (void)viewDidLoad { [super viewDidLoad]; // 按钮 self.stp = [ ...

  3. DIV+CSS 常见问题及解决办法整理

    http://blog.shaogroup.com/divcss-%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E5%8F%8A%E8%A7%A3%E5%86%B3%E5% ...

  4. Windwos下 php mysql apache 环境配置

    一.下载所需软件: 1.安装Windows组件: 安装Apache的前  必须安装  VC11 vcredist_x86.exe (64位请下载vcredist_x64.exe),选择时尽量选择英文版 ...

  5. HUST 1351 Group

    (莫名其妙的被一个叫布布扣的网站收录了......什么鬼) 简单DP.dp[i][j]表示把前i个数字分成j段的最优解, 递推式很容易写: (其中sum[]是前缀和:p <= i - L,并且前 ...

  6. S3C2440 TFTLCD驱动详解

    S3C2440自带有LCD控制器,该控制器主要有以下接口 仅仅说TFT显示器,TFT显示器的时序如下 TFT显示器的驱动是以行列的形式逐点扫描过来的,驱动时钟有三种,一种是行时钟,一种是列时钟,还有一 ...

  7. UIAlertController高级之嵌入其他控件 分类: ios技术 2015-02-02 11:58 96人阅读 评论(0) 收藏

    在编码过程中,我们经常遇到需要这样一个效果,就是弹出框的嵌套; 举个最简单的例子,比如你要选择时间,必然需要一个时间选择器DatePicker.但是这个选择器又是在你点击某按钮时弹出,弹出方式最常见的 ...

  8. javascript-函数及兼容

    1.事件绑定,删除,传播,默认方式,获取类型的兼容 var eventList = { //添加事件兼容 addEvent:function (event,type,backevent) { if ( ...

  9. 充电-ios(未完更新中...

    [reference]http://www.cocoachina.com/ios/20160323/15770.html OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装 ...

  10. Object类可以接受引用类型

    Object类是一切类的父类,所以Object类可以接受一切引用类型.连数组和接口对象也都可以接受. 1.接受数组 public class ObjectTest{ public static voi ...