问题标签 [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.

0 投票
2 回答
5930 浏览

istanbul - 如何从 json 结果生成 nyc 报告(无 .nyc_output)?

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

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

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

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

我试过指定一个文件名:

还尝试指定目录:

两者都不起作用。

CLI 帮助文档说

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


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

0 投票
1 回答
74 浏览

code-coverage - 如何使用 nyc 完全删除 lcov-report 的部分?

*我正在使用@cypress/code-coverage 插件。

我试图只包含我想要的目录:

但是这些其他目录(它们是 的兄弟src/),虽然它们显示 0/0 行和 0% - 继续显示在报告中: 在此处输入图像描述

另外,我猜它们没有包含在计算中,因为它们是 0/0,但是那里有一些我可以参考的文档吗?似乎很难找到。

0 投票
2 回答
2426 浏览

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.

enter image description here enter image description here

I have seen this but didn't seem to help.

Code Instrumentation (webpack extension + angular.json):

Cypress appears to be recording and saving coverage:

enter image description here enter image description here

out.json appears to have the correct file and code mapping:

enter image description here enter image description here enter image description here:

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.

0 投票
1 回答
828 浏览

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 文件。

0 投票
5 回答
2601 浏览

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

任何想法?

0 投票
1 回答
208 浏览

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出现以下异常:

难道我做错了什么?

0 投票
0 回答
155 浏览

typescript - 如何获得打字稿节点应用程序的集成测试覆盖率?

我有一个打字稿中的 Web 应用程序后端和一组作为单独进程运行的集成测试,调用 Web 应用程序的其余 API。我想知道集成测试涵盖了 Web 应用程序的代码份额。

我已经为此苦苦挣扎了几天,想知道我是否使用了正确的工具和正确的方法。我正在尝试使用nyc,特别是我nyc instrument在我的 webapp 源代码上运行。它会生成我的 Web 应用程序的缩小、检测版本,仍然在打字稿中。这对我有用。

然后我尝试使用标准tsc编译器来编译这个检测代码。这让我很挣扎,代码不想编译。

然后我会运行编译的、检测的 web 应用程序并启动集成测试,希望检测的后端在受到来自测试的 REST 请求的影响时生成原始覆盖率数据。然后,我将使用nyc将原始数据转换为覆盖率报告。

我想确认我采取的步骤完全有意义。

0 投票
1 回答
657 浏览

node.js - 如何在单个命令中使用 mochawesome 和 mocha-sonarqube-report?

我的 package.json 文件中有以下脚本来检查 UT 的代码覆盖率:

当我运行上述命令时,只会生成 mochawesome-report文件夹,但没有像xunit.xml这样的文件。

如果我在更改 mochawesome 和 sonarqube 的顺序的地方运行以下命令,则会生成 xunit.xml,但不会生成mochawesome-report文件夹:

我究竟做错了什么?这是在一个脚本中同时使用两者的正确方法吗?

0 投票
0 回答
627 浏览

javascript - 如何在赛普拉斯代码覆盖中包含 monorepo 包

我在 monorepo 中有多个包。

@cypress/instrument-cra用来收集覆盖率,它只适用于覆盖里面的代码react-app

我需要走得更远,因为react-app它实际上只是一个游乐场,srcreact-app. 我正在导入包如下:

如何使用 pkg1 的代码覆盖率?

我试图配置nyc,但它没有工作

谢谢!

0 投票
0 回答
135 浏览

node.js - 我的伊斯坦布尔测试覆盖率报告为零

虽然我的测试通过了 mocha,但我的覆盖率仍然为零:

我在 package.json 中的脚本部分如下:

我的纽约部分如下: