【发布时间】:2021-12-17 17:56:40
【问题描述】:
我们使用伊斯坦布尔代码覆盖工具和 Mocha 来执行我们的 Javascript 单元测试。这在相当长的一段时间内一直运作良好。但是,我们在 Node 11 上使用的是 12.0 版。我们正在尝试将构建系统更新到 Node 14,这导致“nyc”命令行工具崩溃。
将我们的 nyc 包更新到 14.1.0 解决了这个问题,但是当与 Node 14 一起使用时,它变得难以置信慢 - 我们的单元测试/代码覆盖在构建中的几分钟内执行系统和本地,现在执行需要超过 30 分钟。
我们的命令行如下所示:
> nyc --all true mocha --exclude test/browserBootStrap/index.js --require ignore-styles --exit --no-colors --timeout=20000 --require test/helper/bootstrap.js --recursive -R min
我们的 bootstrap 主要设置了一堆 require 和 node 的路径变量,以及一些用于单元测试“依赖注入”的 stub 模块。我们的 NYC 配置如下所示:
"nyc": {
"reporter": [
"cobertura"
],
"all": false,
"include": [
"Content/**"
],
"exclude": [
"node_modules/**",
"Content/@types/**",
"Content/bower_components/**",
"Content/diagnostics/**",
"Content/events/**",
"Content/extenders/**",
"Content/hosts/**",
"Content/lib/**",
"Content/nls/**",
"Content/polyfills/**",
"Content/remove/**",
"Content/requirePlugins/**",
"Content/security/**",
"Content/storage/**",
"Content/tutorials/**",
"Content/tests/**",
"test/**"
],
"extension": [
".ts"
],
"check-coverage": false,
"sourceMap": false,
"statements": 100,
"lines": 100,
"branches": 100,
"functions": 100
},
我在此附加了 chrome 调试器,它运行得很快,但是当我这样做时,它因命令行而异,它排除了“--all true”开关。
我查看了“nyc”初始化代码,其中有一行我更改为添加一些控制台日志记录
if (argv.all) { console.log("adding all files"); nyc.addAllFiles(); console.log("adding all files - done"); }
这显然是花费了这么多时间的步骤。第一个日志语句立即出现,第二个则需要很长时间才能到达。
有谁知道我可以更改哪种配置以使其更好地工作或这里可能发生什么问题?
【问题讨论】: