我希望我的 jenkins 构建在代码覆盖率未达到 karma.config.js 中定义的阈值时中断。如果代码覆盖率不符合定义的阈值,Karma 应该返回非零错误代码以中断持续集成。但在我的例子中,它以零错误代码退出,因此如果代码覆盖率小于阈值,则不会导致测试失败。
版本
Angular CLI:6.0.8
Angular :6.1.9
karma :1.7.1
代码:
以下是我在 karma.config.js 中设置的阈值
coverageIstanbulReporter: {
dir: require('path').join(__dirname, '../coverage'),
reports: ['html', 'lcovonly'],
fixWebpackSourcePaths: true,
thresholds: {
statements: 80,
lines: 80,
branches: 80,
functions: 80
}
}
我正在执行以下命令:
ng 测试 --watch false --browsers PhantomJS --code-coverage
Karma 显示以下错误,但返回 0 作为错误代码:
错误 [reporter.coverage-istanbul]:分支机构的覆盖率 (70.7%) 未达到全局阈值 (80%)
错误 [reporter.coverage-istanbul]:功能覆盖率 (79.05%) 未达到全局阈值 (80%)
预期行为
如果代码覆盖率未达到中断持续集成的阈值,Karma 将返回非零错误代码
实际行为
Karma 报错但正常退出,错误代码为零
在寻找解决方案时,我发现了以下信息:
“像 ng test
、ng serve
和 ng build --watch
这样以监视模式运行的命令通常不会以错误。这是设计使然。
ng test --watch=false
、ng build
和 ng e2e
等非 watch 命令确实会以错误代码退出。
此外,似乎无法同时关闭自动监视和生成代码覆盖率”
如果有人对我如何解决这个问题有任何建议,或者如果有人对我可能做错了什么有任何想法,请告诉我。
最佳答案
关于angular - 如果代码覆盖率不符合 Angular 6 中定义的阈值,则从 Karma 返回非零错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54708845/