1

我继承了带有 Jasmine 单元测试的 JS 代码库。测试框架使用karmainstanbul-combine来获取代码覆盖率。它似乎istanbul-combine不适用于当前的节点模块,并且不再维护:推荐的替换是nyc. 我在istanbul-combine替换nycMakefile.

我成功地将我单独的覆盖结果(json)文件合并到一个coverage-final.json文件中(this SO question),但现在我需要生成摘要报告。

如何从coverage.json文件生成摘要报告?

我认为这里的一个问题是我没有.nyc_output包含中间结果的目录,因为我没有nyc用来生成覆盖率数据。我所有的覆盖数据都在一个coverage目录及其子目录中。

我试过指定一个文件名:

npx nyc report --include coverage-final.json

还尝试指定目录:

npx nyc report --include coverage

两者都不起作用。

----------|---------|----------|---------|---------|-------------------
File      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
----------|---------|----------|---------|---------|-------------------
All files |       0 |        0 |       0 |       0 |                   
----------|---------|----------|---------|---------|-------------------

CLI 帮助文档说

  --temp-dir, -t          directory to read raw coverage information from

但是当我使用那个指向coverage目录(即,npx nyc report -t coverage)时,我得到了同样不令人满意的结果。纽约市在接受这些数据的格式上显然相当严格。


这是我要替换的原始 Makefile 行:

PATH=$(PROJECT_HOME)/bin:$$PATH node_modules/istanbul-combine/cli.js \
    -d coverage/summary -r html \
    coverage/*/coverage-final.json
4

2 回答 2

11

在我的 Makefile 中使用这一行有效:

npx nyc report --reporter html --reporter text -t coverage --report-dir coverage/summary

它从目录中获取 JSON 文件coverage并将它们完全放入coverage/summary子目录中的 HTML 报告中。(不需要nyc merge我之前的问题/答案中的命令。)

我不确定为什么该-t选项以前不起作用。可能是我使用了错误的版本nyc(15.0.0 而不是 14.1.1,fwiw)。

于 2020-05-06T19:38:23.713 回答
1

在尝试了多个 nyc 命令从 JSON 生成报告但没有成功后,我发现了 nyc 的一个有趣行为:生成报告时,您必须位于检测代码的父目录中。例如:如果我检测的代码在 中/usr/share/node/**,并且合并的coverage.json结果在/tmp目录中。如果我跑下来nyc report --temp-dir=/tmp --reporter=text/tmp我什么也得不到。

----------|---------|----------|---------|---------|-------------------
File      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------|---------|----------|---------|---------|-------------------
All files |       0 |        0 |       0 |       0 |
----------|---------|----------|---------|---------|-------------------

但是,如果我在/usr/share/nodeor下运行相同的命令/,我可以得到正确的输出和覆盖数字。不确定这是否是纽约市的一个奇怪的许可问题。如果这是 nyc 的预期行为

于 2020-08-20T22:27:31.617 回答