问题标签 [nyc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
istanbul - 如何从 json 结果生成 nyc 报告(无 .nyc_output)?
我继承了带有 Jasmine 单元测试的 JS 代码库。测试框架使用karma
和instanbul-combine
来获取代码覆盖率。它似乎istanbul-combine
不适用于当前的节点模块,并且不再维护:推荐的替换是nyc
. 我在istanbul-combine
替换nyc
为Makefile
.
我成功地将我单独的覆盖结果(json)文件合并到一个coverage-final.json
文件中(this SO question),但现在我需要生成摘要报告。
如何从coverage.json
文件生成摘要报告?
我认为这里的一个问题是我没有.nyc_output
包含中间结果的目录,因为我没有nyc
用来生成覆盖率数据。我所有的覆盖数据都在一个coverage
目录及其子目录中。
我试过指定一个文件名:
还尝试指定目录:
两者都不起作用。
CLI 帮助文档说
但是当我使用那个指向coverage
目录(即,npx nyc report -t coverage
)时,我得到了同样不令人满意的结果。纽约市在接受这些数据的格式上显然相当严格。
这是我要替换的原始 Makefile 行:
angular - Angular + Cypress code coverage reporting not working
I have been trying to get Cypress code coverage working with my Angular production project to no avail.
To try and help diagnose it, I have created a minimal implementation project to make sure I wasn't introducing anything weird in the production version, which I don't think I am as the same issue is still happening. It's starting to drive me mad!
I have used a few references and as far as I can see I have the things in place I need to:
As far as I can tell the Angular and Cypress side is all hooked up and am getting output in the .nyc_output folder and a coverage report. However the report is not indicating typescript line coverage or including those stats.
I have seen this but didn't seem to help.
Code Instrumentation (webpack extension + angular.json):
Cypress appears to be recording and saving coverage:
out.json appears to have the correct file and code mapping:
package.json (nyc config + deps):
Spec file:
Sorry it's so long but I am stuck as to where to go next. Many thanks if you can point me in any direction.
Update based on answer investigation:
Looking at the past versions of the @cypress/code-coverage it appears the issue for me was introduced in v3.3.0 of the plugin. All the versions for v3.2.* were working for me when downgrading my minimal project. After looking at the documentation changes for v3.3.0 the key bit of information in the readme was:
My original nyc config was:
So for some reason even though I have metrics for the files that were being tested in out.json a second "empty placeholder" node was being created and overriding the subsequent report generation. I am guessing that this is potentially a bug or a problem with my setup again so will ask the creators.
I can now see coverage if I change my nyc config to:
This does mean that if I don't hit a file with testing it won't be included as an empty placeholder as "all": true is no longer present.
Looking at @briebug/cypress-schematic@3.3.0 this doesn't appear to be causing any issues (same happens without using their builder) but has been raised as one here and here.
typescript - Mocha typescript 测试方法正在运行,但 nyc 没有覆盖这些代码行
我已经使用 nyc 来获取我用 typescript 编写的 nodeJs api 的代码覆盖率。我已经为所有 api 和控制器编写了测试方法。Nyc 已配置并且可以正常工作以获取控制器的覆盖范围,但即使在所有 api 都进行了单元测试之后,nyc 也没有覆盖 API 代码块。
用于运行测试方法的脚本 -
"test":"mocha --timeout 99999 -r ts-node/register ./test/**/*.spec.ts --recursive --exit" "coverage":"nyc --reporter text-summary --记者 html --include src npm test"
src 包含所有控制器和 api 文件。
node.js - 纽约 + 摩卡 + es6 模块
我正在尝试使用 nyc + mocha 来获得使用 es6 模块语法的单元测试的测试覆盖率。当我运行mocha my_test.mjs
一切正常。my_test.mjs 中的依赖项(使用本机导入)已正确解析。但是当我在这个命令前面加上 nyc:nyc mocha my_test.mjs
它不再起作用,抛出这个错误:
我尝试了不同的变体nyc --require esm mocha my_test.mjs
或强制--experimental-modules
使用节点,但似乎没有任何效果。
注意,我使用的是最新版本的 node、nyc 和 mocha
任何想法?
node.js - nyc ReferenceError:cov_vyj5vtdds 未使用工作线程定义
当我尝试使用nyc
. 我还使用库node-worker-threads-pool来创建工作线程池。
我创建了一个最小的示例来模拟这种行为。在这个例子中,行为是相同的,当我执行测试时,一切正常,但是当我试图获得覆盖率时,我有一个异常。
这是我创建新线程的文件
这是测试
当我执行NODE_ENV=test mocha --exit 'thread.test.js' --maxWorkers=2
测试通过时,但是当我尝试使用 nyc 获得覆盖率时,会NODE_ENV=test nyc --reporter=text --reporter=html --reporter=lcov mocha --exit 'thread.test.js' --maxWorkers=2
出现以下异常:
难道我做错了什么?
typescript - 如何获得打字稿节点应用程序的集成测试覆盖率?
我有一个打字稿中的 Web 应用程序后端和一组作为单独进程运行的集成测试,调用 Web 应用程序的其余 API。我想知道集成测试涵盖了 Web 应用程序的代码份额。
我已经为此苦苦挣扎了几天,想知道我是否使用了正确的工具和正确的方法。我正在尝试使用nyc
,特别是我nyc instrument
在我的 webapp 源代码上运行。它会生成我的 Web 应用程序的缩小、检测版本,仍然在打字稿中。这对我有用。
然后我尝试使用标准tsc
编译器来编译这个检测代码。这让我很挣扎,代码不想编译。
然后我会运行编译的、检测的 web 应用程序并启动集成测试,希望检测的后端在受到来自测试的 REST 请求的影响时生成原始覆盖率数据。然后,我将使用nyc
将原始数据转换为覆盖率报告。
我想确认我采取的步骤完全有意义。
node.js - 如何在单个命令中使用 mochawesome 和 mocha-sonarqube-report?
我的 package.json 文件中有以下脚本来检查 UT 的代码覆盖率:
当我运行上述命令时,只会生成 mochawesome-report文件夹,但没有像xunit.xml这样的文件。
如果我在更改 mochawesome 和 sonarqube 的顺序的地方运行以下命令,则会生成 xunit.xml,但不会生成mochawesome-report文件夹:
我究竟做错了什么?这是在一个脚本中同时使用两者的正确方法吗?
javascript - 如何在赛普拉斯代码覆盖中包含 monorepo 包
我在 monorepo 中有多个包。
我@cypress/instrument-cra
用来收集覆盖率,它只适用于覆盖里面的代码react-app
。
我需要走得更远,因为react-app
它实际上只是一个游乐场,src
而react-app
. 我正在导入包如下:
如何使用 pkg1 的代码覆盖率?
我试图配置nyc
,但它没有工作
谢谢!
node.js - 我的伊斯坦布尔测试覆盖率报告为零
虽然我的测试通过了 mocha,但我的覆盖率仍然为零:
我在 package.json 中的脚本部分如下:
我的纽约部分如下: