运行 多个 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
我正在使用几个定制的 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