如何从React项目的jest-junit获取代码覆盖率报告

时间:2019-10-30 08:50:32

标签: react-native jenkins junit jestjs

根据此article,我想获得开玩笑的代码覆盖率报告(文章中的选项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'
        }
      }
    }

但是我看不到Jenkins的junit覆盖率报告,而文章说

  

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

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

为什么我在詹金斯没有得到jun​​it覆盖率报告?我该怎么办或更改?

1 个答案:

答案 0 :(得分:2)

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

为了导出行覆盖率,您需要报告一些其他覆盖率,例如 cobertura:

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

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

相关问题