与gulp并行运行多个qunit测试

时间:2016-11-22 09:44:25

标签: javascript gulp qunit

我正在开发一个包含多个定制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测试,因为它们不相互依赖?

1 个答案:

答案 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