Jest:如何合并来自不同笑话测试运行的覆盖率报告

问题描述 投票:0回答:5

有人设法将两个单独的玩笑测试运行的测试覆盖率报告结合起来吗?

我是新手,尝试使用默认的笑话报道记者:

["json", "lcov", "text", "clover"]

我尝试使用

nyc
组合 tmp 文件夹中的
coverage-final*.json
文件并输出到
full-test-coverage/
文件夹。

npx nyc report --report-dir=full-test-coverage/ --reporter=html -t tmp 

full-test-coverage文件夹是用index.html等创建的。但是,合并的报告是空的。

jestjs code-coverage istanbul nyc
5个回答
39
投票

我设法让它与纽约一起工作。步骤:

  • 使用覆盖率报告器“json”收集多个覆盖率报告
  • 将它们全部放在一个目录中(在我的情况下需要重命名多个
    coverage-final.json
    文件)
  • nyc merge multiple-sources-dir merged-output/merged-coverage.json
  • nyc report -t merged-output --report-dir merged-report --reporter=html --reporter=cobertura

36
投票

我也在努力解决这个问题,但我设法通过使用 istanbul-merge

来做到这一点

因此,假设您要合并位于两个不同文件夹

coverage-final.json
f1
中名为
f2
的两个测试覆盖率,并将输出命名为
f3/coverage.json
,您可以这样做:

npx istanbul-merge --out coverage.json ./f1/coverage-final.json ./f2/coverage-final.json

然后使用 instanbul 创建 HTML 报告:

npx istanbul report --include coverage.json --dir f3 html


0
投票

基于 另一个答案,这里有一个脚本,它将从多个纱线工作区收集所有覆盖文件并合并它们:

#! /bin/bash

set -e

rm -rf coverage
mkdir -p coverage/workspaces
yarn workspaces foreach -Apv exec bash -c '[ ! -f coverage/coverage-final.json ] && exit 0 || cp coverage/coverage-final.json '$(pwd)'/coverage/workspaces/$(basename $(pwd))-coverage-final.json'
yarn run nyc merge coverage/workspaces coverage/monorepo-coverage.json
yarn run nyc report -t coverage --report-dir coverage/html --reporter=html-spa

请注意,

$(pwd)
在脚本的上下文中执行(我关闭并重新打开该命令周围的单引号),而其他子shell被引用并将发生在工作区exec的上下文中(因此有一个CWD工作区。


0
投票

截至 2023 年,该解决方案对我有效,但我的用例有点不同。我从 monorepo 中的两个目录获取了覆盖率,并希望将它们合并到各种覆盖率报告类型中(对于 CI 中的其他工具):

  1. intall
    istanbul-merge
    nyc
    软件包(我分别获得了 v2.0.0 和 15.1.0)
  2. 添加这三个脚本,前提是您希望通过
    yarn test
    运行所有测试后合并报告:
"merge-coverage-report-jsons": "istanbul-merge --out coverage-temp/coverage-final.json packages/ui/coverage/coverage-final.json packages/plugins-core/coverage/coverage-final.json",
"generate-coverage-all-packages": "nyc report --reporter=html --reporter=text --reporter=lcov --reporter=clover --report-dir=coverage --temp-dir=coverage-temp",
"posttest": "yarn merge-coverage-report-jsons && yarn generate-coverage-all-packages",

0
投票

您可以查看我创建的教程,该教程展示了如何使用 GitHub CI 来合并来自不同存储库的覆盖率报告并输出最终报告。

https://maxat-akbanov.com/tutorial-combining-jest-test-coverage-reports-with-istanbuljs-in-github-ci

© www.soinside.com 2019 - 2024. All rights reserved.