JS单元测试简单的项目实例(mocha+unit.js+istanbul)
2017-01-19 11:27
405 查看
MochaPro项目实例
整体MochaPro项目框架图:
项目测试设计的库文件:mocha、unit.js、istanbul
第一步,确定项目测试的源代码,MochaPro项目的测试源代码放在,src路径下
condition.jsfunction judge(a,b) { if(a>10 && b<15){ if(!(a==b)){ return (a>b)?a:b; } else{ return a; } } else if(a===11 || b===16){ return a+b; } else{ return -1; } } module.exports=judge;defineVar.js
exports.x=2; exports.y=3; exports.str='hell0'; exports.arr=['hell','obj'];DocWrite.js
var head=function(hello){ return hello; }; module.exports=head;isNumber.js
var isNumber=function(num){ if(!isNaN(num)) { return num; } else { return "it is not number"; } } module.exports=isNumber;obj.js
var person={ firstname : "Bill", lastname : "Gates", id : 5566, sex : ['male','female'], date : '2016/1/18' }; module.exports=person;上述是要进行单元测试的源代码。
第二步,安装单元测试所依赖的库
安装库的方式有两种,不管是哪种安装方式,最好都在MochaPro根目录下,我的是在E:/MochaPro,单个安装执行的命令如下:E: cd MochaPro npm install mocha --save-dev npm install unit.js --save-dev npm install istanbul --save-dev 或者执行如下命令: E: cd MochaPro npm install mocha npm install unit.js npm install istanbul第二种,通过配置文件安装,在E:/MochaPro目录下创建配置文件,package.json,在配置文件中添加如下信息:
{ "dependencies": { "mocha": "^3.2.0", "istanbul": "^0.4.5", "unit.js": "2.0.0" }, "devDependencies": { "mocha": "^3.2.0", "istanbul": "^0.4.5", "unit.js": "2.0.0" } }然后执行如下命令:
E: cd MochaPro npm install在命令行输入:mocha version,验证mocha是否安装成功:
第三步,创建测试目录test,编写测试用例源码
进入到MochaPro目录创建测试目录test,在test文件夹添加测试源码,测试源码文件如下:test.conditon.js
var judge=require("../src/condition.js"); var test=require("unit.js"); describe("if else",function(){ it("a=12 and b=13 return b",function(){ test.should(judge(12,11)).be.equal(12); }); it("a=12 and b=12 return a",function(){ test.should(judge(12,12)).be.equal(12); }); it("a=11 and b=16 return a+b",function(){ test.should(judge(11,16)).be.equal(27); }); it("a=10 and b=16 return a+b",function(){ test.should(judge(10,16)).be.equal(26); }); it("a=9 and b=15 return -1",function(){ test.should(judge(9,15)).be.equal(-1); }); it("a=11 and b=12 return -1",function(){ test.should(judge(11,12)).be.equal(12); }); })
test.defindVar.js
var test=require('unit.js'); /* var x=2; var y=3; var z=x+y; var str='hell0'; var arr=['hell','obj']; */ var Var=require("../src/defineVar.js") describe('variable define',function(){ it('array',function(){ test.object(Var.arr).isArray; }); it('string',function(){ test.should(Var.str).be.type('string'); }); it('number',function(){ test.should(Var.x).be.equal(2); test.should(Var.y).be.equal(3); }); })
test.head.js
var head=require("../src/DocWrite.js"); var test=require("unit.js"); describe("head function",function(){ it("#head",function(){ var cont="This is a heading"; test.should(head("This is a heading")).be.equal(cont); }); it("input type is string",function(){ test.should(head("This is a heading")).be.type("string"); }); });
test.isNumber.js
var isNumber=require("../src/isNumber.js"); var test=require("unit.js"); describe("test isNumber",function(){ it("the input is positive interger",function(){ test.must(isNumber(4)).be.equal(4); test.must(isNumber(11111)).be.equal(11111); }); it("the input is zero",function(){ test.must(isNumber(0)).be.equal(0); }); it("the input is negtive interger",function(){ test.must(isNumber(-4)).be.equal(-4); test.must(isNumber(-11111)).be.equal(-11111); }); it("the input is string",function(){ test.must(isNumber("hello world")).be.a.string(); test.must(isNumber("hello world")).be.equal("it is not number"); }); })
test.obj.js
var person=require("../src/obj.js"); var test=require("unit.js"); describe("obj type",function(){ it("use hasProperty",function(){ test.object(person).hasProperty('firstname'); test.object(person).hasProperty('lastname','Gates'); }); it("use isArray and isDate",function(){ test.object(person).isArray; test.object(person).isDate; }); it("use hasKey and hasValue",function(){ test.object(person).hasValue('Gates'); test.object(person).hasKey('sex'); }); })
第四步,执行测试用例
通过mocha命令执行测试用例,执行测试用例的方式有两种,执行单条测试用例的命令如下:E: cd MochaPro mocha test/test.conditon.js命令执行成功,如下所示:
批量执行测试用例命令如下:
执行批量操作是,src没有其他的文件,为了能更好的执行测试用例,可以通过更改配置文件package.json:
{ "dependencies": { "mocha": "^3.2.0", "istanbul": "^0.4.5", "unit.js": "2.0.0" }, "devDependencies": { "mocha": "^3.2.0", "istanbul": "^0.4.5", "unit.js": "2.0.0" }, "scripts": { "test/*": "mocha", } }文件配置好之后,可以通过如下命令执行测试用:
E: cd MochaPro mocha命令执行成功之后:
如果上述都不成功,可以返回到MochaPro的上一层,执行命令:mocha init MochaPro
在目录下会出现如下红色标注的文件:
本人习惯,是都删除,不然mocha.js会出很多问题,根据个人炒作习惯。
第五步,代码覆盖
在根目录E:\MochaPro执行命令:istanbul cover node_modules/mocha/bin/_mocha命令执行成功会出现如下图所示:
且在E:/MochaPro目录下生成代码覆盖报告文件:coverage/lcov-report
在该目录下可以看到代码覆盖的html文件,打开index.html,会出现如下图所示:
点击src/
点击conditon.js
这些文件中会显示代码的覆盖率,如果覆盖不完全,会有颜色标注,可以通过在测试代码中,增加或修改测试用例,来实现代码覆盖的百分比
相关文章推荐
- JS单元测试简单的项目实例(mocha+unit.js+istanbul)
- (NodeJS+unit.js+MochaJS+istanbul)简单操作实例
- (NodeJS+unit.js+MochaJS+istanbul)简单操作实例
- Mocha+Unit.js操作实例代码
- Mocha+Unit.js操作实例代码
- 几个简单的js实例
- node.js 基本资料 和简单实例
- js实例入门(简单展开或关闭)
- js实例入门(简单展开或关闭)
- FLASH与JS通信简单实例
- 通过js获取cookie的实例及简单分析
- 结合项目实例 回顾传统设计模式(四)工厂模式(简单工厂、普通工厂、抽象工厂)
- 案例4-3 Ajax的响应处理简单实例(征服Ajax——Web 2.0快速入门与项目实践Java)
- js+Ajax+PHP 简单实例
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建项目
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建项目
- javascript笔记-jsunit简单例子
- FLASH与JS通信简单实例
- js入门·循环与判断/利用函数的简单实例/使用对象/列举对象属性的名称
- json 介绍 js简单实例