Output gulp-qunit控制台输出到文件
Output gulp-qunit console output to file
我正在 运行 使用 QUnit 进行单元测试,并试图将 QUnit 集成到我们的构建自动化和持续集成过程中。为了让 Atlassian Bamboo 解析测试输出,它要求测试输出位于 xml 文件中。我可以使用 qunit-reporter-junit 插件生成所需 xml 格式的控制台日志。当 Gulp-QUnit 运行我们的 test-runner.html 文件时,它将 console.log 输出到屏幕。我的问题是我找不到将此 console.log 输出通过管道传输到文件中的方法。
我尝试了以下方法:
使用 gulp-log-capture 插件(什么都不做):
gulp.task('qunit', function() {
return gulp.src('./qunit/test-runner.html')
.pipe(logCapture.start(console,'log'))
.pipe(qunit())
.pipe(logCapture.stop('build.xml'));
});
将输出通过管道传输到写入流(这会引发错误):
gulp.task('qunit', function() {
return gulp.src('./qunit/test-runner.html')
.pipe(qunit())
.pipe(fs.createWriteStream('build.xml));
});
使用 gulp-out 插件(它只是将输入 html 通过管道传输到新文件中):
gulp.task('qunit', function() {
return gulp.src('./qunit/test-runner.html')
.pipe(qunit())
.pipe(out('build.xml');
});
XML 就在屏幕上,我只需要以某种方式将其放入文件即可。
事实证明,phantom js 采用类似节点的脚本,这些脚本将 运行 执行。我基本上从 phantom-js 的示例目录中获取了 运行-qunit 脚本,并将其调整为将控制台输出通过管道传输到 build.xml 文件中。可以在此处找到示例脚本:https://github.com/ariya/phantomjs/blob/master/examples/run-qunit.js
我只是像这样调整了 onConsoleMessage 侦听器 (ln48):
page.onConsoleMessage = function(msg) {
if( msg.search(/xml/) > -1 ) {
fs.write('build.xml',msg);
}
console.log(msg);
};
为了使此 运行 作为自动构建过程的一部分,在 Gulp 我 运行 使用 exec 插件执行以下任务。
exec = require('child_process').exec;
.
.
.
gulp.task('phantom',function() {
exec('phantomjs ./qunit/run-qunit.js ./qunit/test-runner.html');
});
这两项调整都成功创建了一个 build.xml 文件,Atlassian Bamboo 可以在其进程中读取该文件。
我正在 运行 使用 QUnit 进行单元测试,并试图将 QUnit 集成到我们的构建自动化和持续集成过程中。为了让 Atlassian Bamboo 解析测试输出,它要求测试输出位于 xml 文件中。我可以使用 qunit-reporter-junit 插件生成所需 xml 格式的控制台日志。当 Gulp-QUnit 运行我们的 test-runner.html 文件时,它将 console.log 输出到屏幕。我的问题是我找不到将此 console.log 输出通过管道传输到文件中的方法。
我尝试了以下方法:
使用 gulp-log-capture 插件(什么都不做):
gulp.task('qunit', function() {
return gulp.src('./qunit/test-runner.html')
.pipe(logCapture.start(console,'log'))
.pipe(qunit())
.pipe(logCapture.stop('build.xml'));
});
将输出通过管道传输到写入流(这会引发错误):
gulp.task('qunit', function() {
return gulp.src('./qunit/test-runner.html')
.pipe(qunit())
.pipe(fs.createWriteStream('build.xml));
});
使用 gulp-out 插件(它只是将输入 html 通过管道传输到新文件中):
gulp.task('qunit', function() {
return gulp.src('./qunit/test-runner.html')
.pipe(qunit())
.pipe(out('build.xml');
});
XML 就在屏幕上,我只需要以某种方式将其放入文件即可。
事实证明,phantom js 采用类似节点的脚本,这些脚本将 运行 执行。我基本上从 phantom-js 的示例目录中获取了 运行-qunit 脚本,并将其调整为将控制台输出通过管道传输到 build.xml 文件中。可以在此处找到示例脚本:https://github.com/ariya/phantomjs/blob/master/examples/run-qunit.js
我只是像这样调整了 onConsoleMessage 侦听器 (ln48):
page.onConsoleMessage = function(msg) {
if( msg.search(/xml/) > -1 ) {
fs.write('build.xml',msg);
}
console.log(msg);
};
为了使此 运行 作为自动构建过程的一部分,在 Gulp 我 运行 使用 exec 插件执行以下任务。
exec = require('child_process').exec;
.
.
.
gulp.task('phantom',function() {
exec('phantomjs ./qunit/run-qunit.js ./qunit/test-runner.html');
});
这两项调整都成功创建了一个 build.xml 文件,Atlassian Bamboo 可以在其进程中读取该文件。