使用Mocha生成Jenkins的xml测试结果文档

最近使用 Jenkins 进行 CI 持续构建, 发现可以使用 junit 加载测试的情况, 于是想到可否使用 mocha 生成对应的 xml 文件呢?

原来使用 mocha , 其实就是跑一下看看是否达到预期的目标. 基本方法就是通过 Should 断言问题, 然后打印到控制台就完成了. 批量测试也就是使用 Gulp + Gulp-Mocha 根据目录通配符测试, 原理一样.

今天研究了一下, 原来 Mocha 可以生成专门给 CI 提供的 xml 测试结果报告.

这里为了方便, 我就直接使用 Gulp 来说明了, 存放于 gulpfile.js中 :

let name = 'jenkins-mocha';                    // 用 gulp 运行的任务名
let src = ['tests/**/*_test.js'];            // 测试脚本位置
let filepath = 'docs/jenkins-mocha.xml';    // 生成文件存放位置
let suiteName = 'My Mocha Test';            // 本测试用例的名字

Gulp.task(name, function () {
    return Gulp.src(src, {read: false})
        .pipe(Mocha({
            reporter: 'xunit',
            // 这里注意一下, 参数是 output 而不是Gulp-Mocha官方文档给出的 reportFilename
            reporterOptions: {output: filepath, suiteName: suiteName},

            timeout: ConfigMocha.timeout,
            globals: {
                should: require('chai').should()
            }
        }));
});

运行的时候使用 gulp jenkins-mocha 即可运行测试生成 xml 文件给 Jenkins 使用.

Jenkins调用:

// 当前面执行没问题时执行
stage('Load UnitXml') {
    steps {
        // 使用通配符是因为可能有很多测试用例生成很多xml文件.
        junit 'docs/**/*.xml'
    }
}

或者

// 无论前面执行是否成功都执行, 推荐使用本方法
post {
    always {
        junit 'docs/**/*.xml'
    }
}

相关文档:

Mocha
Gulp Mocha
在 gulp 中运行 Mocha 测试
Mocha 中文文档

Donate - Support to make this site better.
捐助 - 支持我让我做得更好.