为什么 nyc 不为我的项目收集测试覆盖率?

Why does nyc does not gather test coverage for my project?

我正在使用打字稿为 vscode 开发 extension。我设置了一个 GitHub 动作来执行我的测试用例。为了收集测试覆盖率,我正在使用 nyc。

这些是我的节点脚本:

"compile": "tsc -p ./",
"test": "npm run compile && node ./out/test/runTest.js",
"coverage": "nyc npm run test"

当我 运行 npm run coverage 我看到我所有的测试用例都在执行(它们没有存储在文件 runTest.js 中),但只有测试文件的覆盖范围 runTest.js 聚集。相关的 类 lib.tsextension.ts 没有显示在报道中。

为什么会这样?我做错了什么?

查看我的 package.json and .nycrc.json 配置。

我可以通过在类似问题上坚持伟大的 blogpost which I found 来解决这个问题。

问题是,NYC 是一个命令行工具。执行测试时,我专注于 .nycrc 文件中的配置。事实上,visual studio 代码测试运行器未使用此配置,必须在测试运行器内部进行配置。

我修复了 this commit 中损坏的测试覆盖生成。