我将项目从5号角升级到6号角,我能够构建该项目并运行所有单元测试,但是代码覆盖率报告并不包括所有文件的覆盖率。 我的项目分为2个文件夹和2个模块app.module和我的应用程序模块。在根目录下有两个文件夹dev和src。 Dev文件夹包含main.ts和app.module,而src文件夹包含所有其他组件。运行ng test --code-coverage后,生成的覆盖率报告仅显示dev文件夹中文件的覆盖率,该报告显示3个文件test.ts,polyfill.ts和app.component.ts的覆盖率,我还有其他组件/ src文件夹中的服务/指令以及相应的规范文件,这些规范文件正在运行测试,但src文件夹下的文件未生成覆盖率。
这是我的angular.json文件测试部分的内容
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "dev/test.ts",
"karmaConfig": "./karma.conf.js",
"polyfills": "dev/polyfills.ts",
"tsConfig": "dev/tsconfig.spec.json",
"scripts": [],
"styles": [
"dev/styles.scss"
],
"assets": [
"dev/assets"
]
}
},
test.ts的内容
// Then we find all the tests.
const context1 = require.context('./', true, /\.spec\.ts$/);
const context = require.context('../src', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);
context1.keys().map(context1);
// Finally, start Karma to run the tests.
__karma__.start();
package.json文件的内容
"devDependencies": {
"@angular-devkit/build-angular": "~0.8.0",
"@angular/animations": "^6.1.9",
"@angular/cli": "^6.1.1",
"@angular/common": "^6.1.9",
"@angular/compiler": "^6.1.9",
"@angular/compiler-cli": "^6.1.9",
"@angular/core": "^6.1.9",
"@angular/forms": "^6.1.9",
"@angular/http": "^6.1.9",
"@angular/platform-browser": "^6.1.9",
"@angular/platform-browser-dynamic": "^6.1.9",
"@angular/router": "^6.1.9",
"@northstar/shared-module": "^5.0.5",
"@types/faker": "^4.1.4",
"@types/jasmine": "^2.8.8",
"@types/node": "^6.0.117",
"chai": "3.5.0",
"codelyzer": "^4.4.2",
"core-js": "^2.5.7",
"faker": "^4.1.0",
"htmlhint": "0.9.13",
"jasmine-core": "^2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "^3.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-cli": "1.0.1",
"karma-coverage-istanbul-reporter": "^2.0.1",
"karma-istanbul-threshold": "1.2.2",
"karma-jasmine": "^1.1.2",
"karma-jasmine-html-reporter": "~0.2.2",
"karma-trx-reporter": "~0.2.9",
"ng-packagr": "^3.0.6",
"protractor": "^5.3.0",
"rimraf": "2.5.2",
"rxjs": "^6.3.3",
"stylelint": "~8.4.0",
"stylelint-order": "~0.6.0",
"ts-node": "^5.0.1",
"tsickle": "^0.32.1",
"tslint": "^5.11.0",
"typescript": "^2.9.2",
"web-animations-js": "~2.3.1",
"zone.js": "^0.8.19"
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('karma-istanbul-threshold'),
require('karma-trx-reporter'),
require('@angular-devkit/build-angular/plugins/karma')
],
client: {
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
mime: {
'text/x-typescript': ['ts', 'tsx']
},
coverageIstanbulReporter: {
dir: require('path').join(__dirname, 'coverage'), reports: ['html', 'lcovonly', 'text-summary', 'json'],
fixWebpackSourcePaths: true
},
istanbulThresholdReporter: {
src: 'coverage/coverage-final.json',
reporters: ['text'],
thresholds: {
global: {
statements: 80,
branches: 65,
functions: 80,
lines: 80,
},
// **********For later **********//
// each: {
// statements: 80,
// branches: 80,
// functions: 80,
// lines: 80,
// },
}
},
trxReporter: {
outputFile: 'test/test-results.trx',
shortTestName: false
},
reporters: config.angularCli && config.angularCli.codeCoverage
? ['progress', 'coverage-istanbul','trx', 'istanbul-threshold']
: ['progress', 'kjhtml','trx'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
browserDisconnectTolerance: 2,
browserNoActivityTimeout: 95000,
browserDisconnectTimeout: 30000,
captureTimeout: 60000
});