【问题标题】:How to generate nyc report from json results (no .nyc_output)?如何从 json 结果生成 nyc 报告(无 .nyc_output)?
【发布时间】:2020-08-21 06:27:31
【问题描述】:

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

我成功地将单独的覆盖结果 (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

【问题讨论】:

    标签: istanbul nyc


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-22
        • 1970-01-01
        • 2018-07-16
        相关资源
        最近更新 更多