将 gulp-qunit 控制台输出输出到文件
Posted
技术标签:
【中文标题】将 gulp-qunit 控制台输出输出到文件【英文标题】:Output gulp-qunit console output to file 【发布时间】:2018-05-02 04:53:51 【问题描述】:我正在使用 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 就在屏幕上,我只需要以某种方式将其放入文件中。
【问题讨论】:
【参考方案1】:事实证明,phantom js 采用将在执行时运行的类似节点的脚本。我基本上从 phantom-js 的示例目录中获取了 run-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 可以在其进程中读取该文件。
【讨论】:
以上是关于将 gulp-qunit 控制台输出输出到文件的主要内容,如果未能解决你的问题,请参考以下文章
将 Visual C++ 控制台输出复制(不重定向)到文本文件,同时仍在控制台窗口中查看输出