我继承了茉莉花单元测试的JS代码库。测试框架使用karma和instanbul-combine来获得代码覆盖率。istanbul-combine似乎无法处理当前的节点模块,而且不再维护:推荐的替换是nyc。我很难在istanbul-combine中用nyc替换Makefile。
我成功地将单独的覆盖率结果(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发布于 2020-05-06 19:38:23
在我的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)。
发布于 2020-08-20 22:27:31
在尝试多个nyc命令生成来自JSON的报告之后,我发现了nyc的一个有趣的行为:在生成报表时,必须位于检测代码的父目录中。例如,:如果我检测的代码位于/usr/share/node/**中,而合并的coverage.json结果位于/tmp目录中。如果我在/tmp下运行/tmp,我将什么都得不到。
----------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------|---------|----------|---------|---------|-------------------
All files | 0 | 0 | 0 | 0 |
----------|---------|----------|---------|---------|-------------------但是,如果我在/usr/share/node或/下运行相同的命令,我就能够获得正确的覆盖号输出。不确定这是不是纽约的一个奇怪的许可问题。如果这是纽约的预期行为
https://stackoverflow.com/questions/61547209
复制相似问题