我正在开发一个包含多个定制jQuery插件的项目,每个插件都有自己的QUnit测试和自己的html fixture,所以我的gulp-qunit
任务是这样的:
gulp.task('qunit', () => {
let path = './assets/test/components/**/*.html';
return gulp.src(path)
.pipe(qunit());
})
然而,这样测试按顺序运行,整个测试套件占用了整个构建过程的80%以上,我最近从grunt迁移到gulp以便能够并行化某些任务。
有没有办法并行运行QUnit测试,因为它们不相互依赖?
答案 0 :(得分:1)
您需要为每个.html
文件创建一个流。
这意味着你必须将你的glob解析为一个文件数组,将每个文件映射到它自己的流中,然后将所有流合并为一个:
var gulp = require('gulp');
var qunit = require('gulp-qunit');
var glob = require('glob');
var merge = require('merge-stream');
gulp.task('qunit-parallel', () => {
var files = glob.sync('./assets/test/components/**/*.html');
return merge(files.map(function(file) {
return gulp.src(file).pipe(qunit());
}));
})
我尝试了100个.html
文件,确实要快得多:
[11:09:40] Finished 'qunit-sequential' after 22 s
[11:09:58] Finished 'qunit-parallel' after 2.92 s