配置 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 调试 js (分 karms protractor / test e2e unit )