Igo*_*uyk 5 junit jenkins jestjs react-native
根据这篇文章,我想获得 jest-junit 代码覆盖率报告(文章中的选项 2)
因此,在我的 package.json 中,我像这样调用 jest:"test": "jest --config=jest.config.js",
jest.config.js 包含以下设置:
module.exports = {
preset: 'react-native',
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
setupFiles: ['./jest.setup.js'],
collectCoverage: true,
coverageDirectory: 'src/testCoverage',
coverageReporters: [ "text"],
reporters: ["default",
["jest-junit", {usePathForSuiteName: true, outputDirectory: 'src/testCoverage'}]
],
testResultsProcessor: "jest-junit"
};
Run Code Online (Sandbox Code Playgroud)
我这样做是因为 package.json 中编写的笑话代码对我不起作用。
当我执行时,npm run test我在 src/testCoverage 文件夹和 junit.xml 中获取覆盖率数据
然后我在 Jenkins 管道中执行测试阶段:
stage('test') {
steps{
sh script:'''
#!/bin/bash
npm install -g yarn
yarn install
yarn add --dev jest-junit
npm run test
'''
}
post {
always {
junit 'src/testCoverage/junit.xml'
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我没有在 Jenkins 中看到 junit 覆盖率报告,而文章说
调用 junit 的行将发布 npm run test 创建的报告
我唯一拥有的东西 - 这是通过和失败测试的测试结果报告。
为什么我在 Jenkins 中没有得到 junit 覆盖率报告?我应该做什么或改变什么?
小智 3
发生这种情况是因为 junit.xml 仅包含已执行的测试用例列表及其持续时间。
为了导出线路覆盖率,您需要报告一些其他覆盖率,例如 cobertura:
coverageReporters: ['text', 'cobertura'],
Run Code Online (Sandbox Code Playgroud)
它将生成包含覆盖率信息的coverage/cobertura-coverage.xml 文件。现在,您可以使用 junit.xml 报告测试列表,并使用 cobertura-coverage.xml 向 CICD 系统报告线路覆盖率。
| 归档时间: |
|
| 查看次数: |
12638 次 |
| 最近记录: |