有人设法将两个单独的玩笑测试运行的测试覆盖率报告结合起来吗?
我是新手,尝试使用默认的笑话报道记者:
["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等创建的。但是,合并的报告是空的。
我设法让它与纽约一起工作。步骤:
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
我也在努力解决这个问题,但我设法通过使用 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
基于 另一个答案,这里有一个脚本,它将从多个纱线工作区收集所有覆盖文件并合并它们:
#! /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工作区。
截至 2023 年,该解决方案对我有效,但我的用例有点不同。我从 monorepo 中的两个目录获取了覆盖率,并希望将它们合并到各种覆盖率报告类型中(对于 CI 中的其他工具):
istanbul-merge
和 nyc
软件包(我分别获得了 v2.0.0 和 15.1.0)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",
您可以查看我创建的教程,该教程展示了如何使用 GitHub CI 来合并来自不同存储库的覆盖率报告并输出最终报告。
https://maxat-akbanov.com/tutorial-combining-jest-test-coverage-reports-with-istanbuljs-in-github-ci