【问题标题】:Instrumenting Angular project for coverage for protractor tests检测 Angular 项目以覆盖量角器测试
【发布时间】:2021-10-20 22:25:31
【问题描述】:

在 Windows 中,我正在尝试在运行 Protractor 测试时为我的 Angular 项目进行代码覆盖。我正在尝试检测我的代码并按照以下步骤操作:

我在 windows 中设置 NODE_OPTIONS 环境变量如下:

  1. 我创建了一个环境变量NODE_OPTIONS 并将值设置为--max_old_space_size=14336(使用Windows 中的系统环境变量对话框)
  2. 除此之外,在命令提示符下,我运行了以下命令:set NODE_OPTIONS=--max_old_space_size=14336 (我假设使用的内存将是 14GB)

将以下.nycrc文件添加到项目根文件夹:

{
    "extends": "@istanbuljs/nyc-config-typescript",
    "all": true,
    "report-dir": ".cypress-coverage",
    "extension": [
      ".js",
      ".ts",
      ".tsx"
    ],
    "exclude": [
      "**/*.test.{ts,tsx}"
    ],
    "reporter": [
      "json",
      "html"
    ],
    "parserPlugins": [
      "decorators-legacy",
      "decorators",
      "typescript"
    ]
}

然后从项目根文件夹中,我运行了使用 istandul 进行检测的命令:

nyc instrument ./dist ./coverage/instrumented

(请注意:dist 文件夹包含 Angular 项目构建输出(分发版))

命令运行几分钟后,报此错误:

D:\myproj>nyc instrument ./dist ./coverage/instrumented
<--- Last few GCs --->

[11804:0000022A18C7C510]  1864090 ms: Scavenge (reduce) 14315.9 (14349.6) -> 14315.3 (14349.9) MB, 51.1 / 0.0 ms  (average mu = 0.346, current mu = 0.310) allocation failure
[11804:0000022A18C7C510]  1864137 ms: Scavenge (reduce) 14316.1 (14346.9) -> 14315.5 (14347.9) MB, 22.1 / 0.0 ms  (average mu = 0.346, current mu = 0.310) allocation failure


<--- JS stacktrace --->

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 00007FF75D643E0F napi_wrap+108911
 2: 00007FF75D5E7E16 v8::base::CPU::has_sse+61910
 3: 00007FF75D5E8D16 node::OnFatalError+294
 4: 00007FF75DEC0CEE v8::Isolate::ReportExternalAllocationLimitReached+94
 5: 00007FF75DEA5ACD v8::SharedArrayBuffer::Externalize+781
 6: 00007FF75DD4F95C v8::internal::Heap::EphemeronKeyWriteBarrierFromCode+1516
 7: 00007FF75DD5ACEA v8::internal::Heap::ProtectUnprotectedMemoryChunks+1258
 8: 00007FF75DD57E99 v8::internal::Heap::PageFlagsAreConsistent+2457
 9: 00007FF75DD4CA71 v8::internal::Heap::CollectGarbage+2033
10: 00007FF75DD4AC95 v8::internal::Heap::AllocateExternalBackingStore+1349
11: 00007FF75DD6AFEB v8::internal::Factory::NewFillerObject+203
12: 00007FF75DA99E0F v8::internal::interpreter::JumpTableTargetOffsets::iterator::operator=+1039
13: 00007FF75DF49BAD v8::internal::SetupIsolateDelegate::SetupHeap+465229
14: 000000E91F5021E8

由于某些原因,我无法分享我正在进行的项目。供您参考:

  1. 所有源文件的总大小:8MB
  2. 构建输出dist 文件夹中所有 .js 文件的大小:大约100MB

【问题讨论】:

    标签: angular protractor code-coverage istanbul


    【解决方案1】:

    我将堆大小增加到 24GB,它似乎工作正常!

    设置 NODE_OPTIONS=--max_old_space_size=24576 另外,在系统环境变量对话框中设置 NODE_OPTIONS。

    任何人都可以查看并确认它是否是正确的解决方案吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-05
      • 2018-10-25
      • 2017-07-26
      • 2014-10-25
      • 2019-08-12
      • 1970-01-01
      • 2020-12-09
      相关资源
      最近更新 更多