【问题标题】:Run multiple qunit tests in parallel with gulp与 gulp 并行运行多个 qunit 测试
【发布时间】:2016-11-22 09:44:24
【问题描述】:

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

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

但是,通过这种方式,测试按顺序运行,整个测试套件占用了我整个构建过程的 80% 以上,我最近从 grunt 迁移到 gulp,以便能够并行化一些任务。

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

【问题讨论】:

  • 你使用什么gulp 版本?
  • 我正在使用 gulp v3.9.1

标签: javascript gulp qunit


【解决方案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

【讨论】:

  • 这使它从1.47 min 变为17 s,所以这绝对是我想要的:由于一些超时,我有一些随机出现的故障,但我认为这超出了问题,谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-10-13
  • 2012-10-10
  • 1970-01-01
  • 2014-06-27
  • 2013-11-27
  • 2014-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多