运行 多个 qunit 测试与 gulp 并行

Run multiple qunit tests in parallel with gulp

我正在使用几个定制的 jQuery 插件开发一个项目,每个插件都有自己的 QUnit 测试和自己的 html 夹具,所以我的 gulp-qunit 任务完成了像这样:

gulp.task('qunit', () => {
    let path = './assets/test/components/**/*.html';
    return gulp.src(path)
        .pipe(qunit());
})

但是,这样测试是 运行 顺序进行的,整个测试套件占用了我整个构建过程的 80% 以上,我最近从 g[=23 迁移到了 gulp =]t 以便能够并行化一些任务。

有没有办法 运行 QUnit 并行测试,因为它们不相互依赖?

您需要为每个 .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