Gulp: 一个火的都快凉了的自动化构建工具,无需要多说,中文参考网站:http://www.gulpjs.com.cn/
(测试心经系列) 到目前为止,我们用了mocha,karma,istanbul,protractor等各种测试,有点乱,它依赖于一些命令行工具,那现在我们通过gulp及其插件来统一管理测试任务.
npm i -g gulp //全局安装gulp命令行
以下是常用的和测试用的插件:
npm i gulp --save-dev
npm i gulp-load-plugins --save //自动加载插件
npm i gulp-mocha --save-dev //mocha测试
npm i gulp-istanbul --save-dev //istanbul
npm i gulp-protractor --save-dev //protractor
npm i gulp-nodemon --save-dev //启动server
npm i gulp-sequence --save-dev //按顺序加载任务
gulp-load-plugins插件可以自动的按需加载插件,不用手动require导入.默认情况下它只能找到名字为"gulp-","gulp."开头的插件,如果不符合这个命名的插件,需要如下配置:
var $ = require('gulp-load-plugins')({
pattern: ['gulp-*', 'main-bower-files', 'uglify-save-license', 'del','imagemin-pngquant']
});
使用的时候,可以省略名字中的gulp,如果插件名字有多个'-'连接字符,默认情况会转换成驼峰方式,如: $.mocha() , $.istanbul() , $.mainBowerFiles() , $.uglifySaveLicense()
在项目根目录下新建一个gulpfile.js文件,作为gulp任务配置的入口文件.
并配置好我们的测试文件目录,如下:
var gulp = require('gulp');
var path = require('path');
var $ = require('gulp-load-plugins')();
var config = {
mocha: 'test',
istanbul: 'test_coverage'
}
1, 添加mocha测试任务
gulp.task('test:mocha',function () {
gulp.src(path.join(config.mocha, '/**/*.js'),{read: false})
.pipe($.mocha({
reporter: 'list', //list,nyan,spec(default),progress
require: ['should'],
timeout: 5000
}))
.once('error', function () {
process.exit(1);
})
.once('end', function () {
process.exit();
});
});
运行gulp test:mocha 进行mocha测试
2, 添加karma测试任务
karma 在gulp中使用不需要单独安装插件,因为karma提供的API在gulp中调用很方便.
var Server = require('karma').Server;
gulp.task('test:karma', function (done) {
new Server({
configFile: path.join(__dirname, '/karma.conf.js'),
singleRun: true,
autoWatch: false
}, done).start();
});
运行gulp test:karma 进行karma测试
3, 添加istanbul测试覆盖率任务 插件地址:https://github.com/SBoudrias/gulp-istanbul
//istanbul
gulp.task('pre-test', function () {
return gulp.src(path.join(__dirname,'/app.js'))
.pipe($.istanbul())
.pipe($.istanbul.hookRequire())
});
gulp.task('test:istanbul',['pre-test'],function () {
gulp.src(path.join(config.mocha, '/**/*.js'),{read: false})
.pipe($.mocha({
require: ['should'],
timeout: 5000
}))
//输出报告
.pipe($.istanbul.writeReports({
dir: path.join(config.istanbul,'/')
}))
//设置覆盖率门槛,如果不达标,会测试不通过.
.pipe($.istanbul.enforceThresholds({ thresholds: {
global: { //全局门槛
statements: 80,
branches: 80,
lines: 90,
functions: 75
},
each: 60 //单个文件门槛
}}))
.once('error', function () {
process.exit(1);
})
.once('end', function () {
process.exit();
});
});
4, 添加e2e protractor测试任务
e2e测试需要启动server端,之前我们是手动node app.js来启动server.现在我们用gulp-nodemon来做到自动化.
我们希望先启动server再运行e2e任务,所以我们用gulp-sequence插件做顺序执行任务.
var protractor = require("gulp-protractor").protractor;
var webdriver_update = require('gulp-protractor').webdriver_update;
//e2e test
gulp.task('nodemon',function () {
$.nodemon({
script: path.join(__dirname,'/app.js'),
ext: 'js'
})
});
gulp.task('webdriver-update', webdriver_update);
gulp.task('test:protractor',function () {
gulp.src(path.join(config.e2e,'/*.spec.js'))
.pipe(protractor({
configFile: path.join(__dirname,'/protractor.conf.js')
})).on('error', function (err) {
process.exit(1);
}).once('end', function () {
process.exit();
});
});
gulp.task('test:e2e',$.sequence('nodemon','webdriver-update','test:protractor'));
运行gulp test:e2e 启动e2e测试.
5, 添加默认任务
istanbul任务实际上也执行了mocha测试,那我们添加一个默认任务,可以同时执行karma,mocha,istanbul测试.
gulp.task('default',$.sequence('test:karma','test:istanbul'));
运行gulp 不需要加参数,就可自动执行以上三种测试.
本次测试样例:下载地址
美好的一天开始了.
锉
方法
ceshi ceshi
dfafdaf
1
1111111
个梵蒂冈
hoho
Auth verify
Auth verify 2
666
棒诶
123
感谢大佬的博客模板