最近使用 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'
}
}相关文档: