无法使用 nyc/istanbul 进行代码覆盖

Posted

技术标签:

【中文标题】无法使用 nyc/istanbul 进行代码覆盖【英文标题】:Unable to use nyc/istanbul for code coverage 【发布时间】:2018-09-13 16:10:55 【问题描述】:

我使用nightwatch 进行基于硒的测试,但是当我使用nyc nightwatch 时,它只报告测试代码及其100% 的覆盖率。 这是我现在的主要拦截器。我如何获得保险?基本上,我希望最终将其作为 Jenkins CI 的报告。

此外,我还想用我正在使用jest 的 UT 进行测试。通常,"test": "jest --coverage" 将正确列出所有测试代码的覆盖率。所以当我给nyc npm run test 时,它给了我同样的报道,这很好。但是当我只使用nyc jest 运行时,它会返回100% 的jest.config.js 覆盖率!!

我没有mochagrunt 等。

【问题讨论】:

【参考方案1】:

由于 jest 在后台使用 nyc,因此没有理由将它们一起使用。您可以使用 --coverage 标志调用 jest,并告诉它在您的配置中使用哪些报告,如配置中所定义:

  "jest": 
    "collectCoverage": true,
    "collectCoverageFrom": [
      "**/*.js,jsx",
      "!**/node_modules/**",
      "!**/vendor/**"
    ],
    "coverageReporters": [
      "text",
      "cobertura"
    ],
    "reporters": [
      "default",
      "jest-junit"
    ]
  

https://jestjs.io/docs/en/configuration#coveragereporters-arraystring

【讨论】:

以上是关于无法使用 nyc/istanbul 进行代码覆盖的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript:仅在单元测试中找不到模块的声明文件

Xcode 7 代码覆盖率 - 无覆盖率数据

grails代码覆盖无法访问方法

尝试资源的 8 个分支 - 可以进行 jacoco 覆盖吗?

无法连接到服务器。 XMPPException 服务器无响应

单测增量代码覆盖率统计方案