【问题标题】:Istanbul Code Coverage tool incredibly slow after updating from version 12 to version 14从版本 12 更新到版本 14 后,Istanbul Code Coverage 工具速度非常慢
【发布时间】: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 tr​​ue”开关。

我查看了“nyc”初始化代码,其中有一行我更改为添加一些控制台日志记录

if (argv.all) { console.log("adding all files"); nyc.addAllFiles(); console.log("adding all files - done"); }

这显然是花费了这么多时间的步骤。第一个日志语句立即出现,第二个则需要很长时间才能到达。

有谁知道我可以更改哪种配置以使其更好地工作或这里可能发生什么问题?

【问题讨论】:

    标签: node.js mocha.js nyc


    【解决方案1】:

    这里的答案是新版本添加了所有 .js 文件,尽管我们通常只打算扫描 typescript 文件。

    我正在尝试将通配符添加到“排除”列表中,但这不起作用。比如“**/*.js”之类的。

    【讨论】:

    • 排除列表被“packages.json”中的配置覆盖 - 所以一旦我将它添加到那里,它就可以正常工作了。
    猜你喜欢
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 2023-02-09
    • 2022-11-07
    • 2021-12-12
    • 2022-11-16
    • 2022-11-25
    相关资源
    最近更新 更多