如何在React项目中从jest junit获得代码覆盖率报告



根据这篇文章,我想获得jest junit代码覆盖率报告(文章中的选项2(

因此,在我的package.json中,我调用了这样的笑话:"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"
};

我这样做是因为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'
}
}
}

但我没有看到詹金斯的junit报道,而文章说

调用junit的行将发布npm运行测试创建的报告

我唯一拥有的是通过和失败测试的测试结果报告。

为什么我没有得到詹金斯的青少年报道?我应该做什么或改变什么?

之所以会发生这种情况,是因为junit.xml只包含执行的测试用例及其持续时间的列表。

为了导出线路覆盖范围,您需要报告一些其他覆盖范围,例如cobertura:

coverageReporters: ['text', 'cobertura'],

它将生成包含覆盖率信息的coverage/cobertura-verage.xml文件。现在,您可以使用junit.xml报告测试列表,使用cobertura-coverage.xml向CICD系统报告线路覆盖率。

最新更新