如何将Gulp-QUnit控制台输出写入文件适配Atlassian Bamboo
解决Gulp-QUnit输出JUnit XML到文件的问题
我正好踩过这个坑,给你分享两种亲测可行的解决办法:
方法一:重定向Node的stdout到文件
这种方法简单直接,通过临时修改Node的标准输出流,把qunit-reporter-junit输出的XML内容写入指定文件。
步骤1:配置test-runner.html
先确保你的测试 runner 文件里正确加载并配置了qunit-reporter-junit,让它把XML日志输出到控制台:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>QUnit Tests</title> <link rel="stylesheet" href="./node_modules/qunit/qunit/qunit.css"> <script src="./node_modules/qunit/qunit/qunit.js"></script> <script src="./node_modules/qunit-reporter-junit/dist/qunit-reporter-junit.js"></script> <!-- 引入你的测试文件 --> <script src="./tests/my-tests.js"></script> </head> <body> <div id="qunit"></div> <div id="qunit-fixture"></div> <script> // 先禁用自动启动,配置完报告器再启动 QUnit.config.autostart = false; QUnit.load(function() { // 初始化JUnit报告器,将日志输出到console.log new QUnit.JUnitReporter({ log: function(message) { console.log(message); }, title: "项目单元测试报告" }); // 启动测试 QUnit.start(); }); </script> </body> </html>
步骤2:修改Gulp任务
在Gulpfile.js里调整测试任务,捕获并重定向输出:
const gulp = require('gulp'); const qunit = require('gulp-qunit'); const fs = require('fs'); gulp.task('test', function(done) { // 保存原始的标准输出流 const originalStdout = process.stdout; // 创建写入流,指定输出文件路径 const testResultsStream = fs.createWriteStream('./test-results.xml'); // 重定向stdout到文件 process.stdout = testResultsStream; gulp.src('./test-runner.html') .pipe(qunit()) .on('end', () => { // 测试结束后恢复原始stdout,关闭文件流 process.stdout = originalStdout; testResultsStream.end(); done(); }) .on('error', (err) => { // 出错时也要恢复stdout,避免后续任务异常 process.stdout = originalStdout; testResultsStream.end(); done(err); }); });
方法二:直接用PhantomJS命令行调用(备选)
如果第一种方法有兼容性问题,你也可以直接用PhantomJS命令行执行测试 runner,通过shell重定向输出到文件:
const gulp = require('gulp'); const exec = require('gulp-exec'); gulp.task('test', function() { return gulp.src('./test-runner.html') .pipe(exec('phantomjs ./node_modules/qunit-phantomjs-runner/runner.js ./test-runner.html > ./test-results.xml')) .pipe(exec.reporter()); });
执行前需要额外安装依赖包:
npm install qunit-phantomjs-runner gulp-exec --save-dev
验证结果
运行gulp test后,你就能在指定路径下看到生成的test-results.xml文件,这个文件完全符合Bamboo的解析要求!
内容的提问来源于stack exchange,提问作者attributeofextension
相关产品推荐
相关产品推荐

