配置 Angular 9 e2e cobertura 覆盖率报告的正确方法是啥?

Posted

技术标签:

【中文标题】配置 Angular 9 e2e cobertura 覆盖率报告的正确方法是啥?【英文标题】:What's the right way to configure Angular 9 e2e cobertura coverage reports?配置 Angular 9 e2e cobertura 覆盖率报告的正确方法是什么? 【发布时间】:2021-03-25 09:07:01 【问题描述】:

我们需要在 Angular 9 应用程序中拥有 cobertura 风格的覆盖率报告。我正在尝试配置我们的端到端测试以生成此类报告。我安装了 karma-coverage-istanbul-reporter v 2.1.0 并将以下配置添加到 karma.conf.js

plugins: [
    ...
    require('@angular-devkit/build-angular/plugins/karma')
],
client: 
  clearContext: false // leave Jasmine Spec Runner output visible in browser
,
coverageIstanbulReporter: 
  dir: require('path').join(__dirname, './coverage/OurProject'),
  reports: ['html', 'lcovonly', 'text-summary', 'cobertura'],
  fixWebpackSourcePaths: true
,

但是在我们的 package.json 文件中,当我添加 --codeCoverage=true 选项时


  ...
  "version": "0.0.0",
  "scripts": 
    ...
    "lint": "ng lint",
    "e2e": "npm run install-puppeteer && ng e2e --codeCoverage=true"
  ,

运行npm run e2e 时出现以下错误...

Unknown option: '--codeCoverage'

配置我们的 e2e 测试以生成 cobertura 覆盖率报告的正确方法是什么?

【问题讨论】:

--codeCoverage 确实没有列出in the CLI docs。覆盖率往往与 unit 测试更相关(这是 karma.conf.js 的用途),它在 ng test: angular.io/guide/testing-code-coverage 中得到支持。 CLI 似乎有 no plans 来支持 E2E 中的覆盖。 【参考方案1】:

您尝试使用的方法适用于使用 karma 的单元测试。但是 --codeCoverage 选项不适用于 e2e。对于 e2e 测试,我们使用角度量角器。为此,您可以使用 protractor-istanbul-plugin

它可以包含在您的 protractor.conf.js 中,如下所示:-

plugins : [
      path: 'node_modules/protractor-istanbul-plugin'
    ]

它将在您的 e2e 测试运行后创建一个覆盖文件夹。查看它的 html 报告使用命令:-

istanbul report --include=coverage/*.json

更多详情请访问:-https://www.npmjs.com/package/protractor-istanbul-plugin

【讨论】:

以上是关于配置 Angular 9 e2e cobertura 覆盖率报告的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Angular E2E 访问环境变量

angular 调试 js (分 karms protractor / test e2e unit )

工作内容总结5月9日

工作内容总结5月9日

markdown Angular CLI:ng lint,ng test,ng e2e

Angular 测试因 ng e2e 失败,但使用量角器 conf.js 通过