我遇到了一个问题,需要帮助。我正处于编写单元测试用例的早期阶段。我需要特定于代码覆盖率模块。目前我正在获取特定于文件夹的内容。不考虑内部(递归)文件夹。是否有任何选项可以获得特定于模块的代码覆盖率?我也探索了一些 karma 库,但没有运气。
Karma.conf.ts
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'),
require('karma-html-reporter')
],
client:{
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
coverageIstanbulReporter: {
dir: require('path').join(__dirname, 'coverage'),
// reports: [ 'html', 'lcovonly','text-summary','clover','cobertura','json-summary','json','lcov','teamcity','text-lcov','text'],
reports: [ 'html', 'lcovonly'],
fixWebpackSourcePaths: true
},
reporters: ['progress', 'kjhtml','html'],
htmlReporter: {
outputDir: 'unit_test_results',
templatePath: null,
focusOnFailures: true,
namedFiles: true,
pageTitle: null,
urlFriendlyName: false,
reportName: 'test_case_summary_' + new Date().toLocaleDateString()
},
files: [
{ pattern: './src/test.ts', watched: true },
{pattern: './src/assets/**/*.png'},
{pattern: './src/assets/**/**/*.png'},
{pattern: './src/assets/**/*.css'},
{pattern: './src/assets/**/**/*.css'},
{ pattern: './node_modules/@angular/material/prebuilt-themes/indigo-pink.css' },
{ pattern: './node_modules/bootstrap/dist/css/bootstrap.min.css' },
{ pattern: './node_modules/font-awesome/css/font-awesome.min.css' },
{ pattern: './src/styles.css' },
],
captureTimeout :60000,
browserNoActivityTimeout :60000,
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false
});
};
test.ts
import 'zone.js/dist/long-stack-trace-zone';
import 'zone.js/dist/proxy.js';
import 'zone.js/dist/sync-test';
import 'zone.js/dist/jasmine-patch';
import 'zone.js/dist/async-test';
import 'zone.js/dist/fake-async-test';
import { getTestBed } from '@angular/core/testing';
import {
BrowserDynamicTestingModule,
platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing';
// Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.
declare const __karma__: any;
declare const require: any;
// Prevent Karma from running prematurely.
__karma__.loaded = function () { };
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting()
);
var specFiles = {
aa-test: require.context('./app/aa-test', true, /\.spec\.ts$/),
}
for (var file in specFiles) {
console.log('test cases ' + file, specFiles[file].keys());
specFiles[file].keys().map(specFiles[file]);
}
__karma__.start();
文件夹结构: