Sim*_*ion 11 karma-runner karma-jasmine karma-coverage angular angular-test
我收到了这份覆盖摘要
=============================== Coverage summary ===============================
Statements : Unknown% ( 0/0 )
Branches : Unknown% ( 0/0 )
Functions : Unknown% ( 0/0 )
Lines : Unknown% ( 0/0 )
================================================================================
Run Code Online (Sandbox Code Playgroud)
我应用了 Angular 文档中指示的更改代码覆盖率:https : //angular.io/guide/testing#enable-code-coverage-report
但我总是得到同样空虚的夏天。
我的 karma.conf.js
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'),
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/singleWindow'),
reports: ['html', 'lcovonly', 'text-summary'],
fixWebpackSourcePaths: true,
thresholds: {
statements: 80,
lines: 80,
branches: 80,
functions: 80
}
},
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
restartOnFileChange: true,
});
}
Run Code Online (Sandbox Code Playgroud)
Rap*_*aël 10
使用ng test.
事实证明,Angular CLI 默认禁用代码覆盖。您必须使用ng test --code-coverage它开始测试才能工作。
您可以通过添加"codeCoverage": true到文件的test任务来使其始终开启angular.json:
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"name-of-your-app": {
"root": "",
"sourceRoot": "src",
"projectType": "application",
"architect": {
"build": {
/* ... */
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "src/test.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.spec.json",
"karmaConfig": "./karma.conf.js",
"scripts": [],
"assets": [
"src/favicon.ico",
"src/assets"
],
"codeCoverage": true
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
更多信息:https : //angular.io/guide/testing#enable-code-coverage-reports
当覆盖范围达到Unknown%时,意味着您可能已正确启用它。
确保将"sourceRoot"中的属性angular.json设置为项目源文件的根文件夹。
cli使用 中ng的文件"sourceRoot"来计算覆盖率。
它似乎没有对sourceRoot测试做任何其他事情,因此测试运行并通过,但覆盖范围不起作用。