如何从业力代码覆盖率报告中排除文件?
Posted
技术标签:
【中文标题】如何从业力代码覆盖率报告中排除文件?【英文标题】:How do I exclude files from karma code coverage report? 【发布时间】:2015-05-22 00:50:40 【问题描述】:有没有办法从 karma 覆盖率运行器 https://github.com/karma-runner/karma-coverage 的代码覆盖率报告中排除文件?
【问题讨论】:
【参考方案1】:您可以在这里使用多种技术:karma 使用 minimatch glob 作为文件路径,并且可以利用它来排除某些路径。
作为第一个解决方案,我会说尝试仅添加文件的路径以对覆盖范围进行预处理:
// karma.conf.js
module.exports = function(config)
config.set(
files: [
'src/**/*.js',
'test/**/*.js'
],
// coverage reporter generates the coverage
reporters: ['progress', 'coverage'],
preprocessors:
// source files, that you wanna generate coverage for
// do not include tests or libraries
// (these files will be instrumented by Istanbul)
'src/**/*.js': ['coverage']
,
// optionally, configure the reporter
coverageReporter:
type : 'html',
dir : 'coverage/'
);
;
以上是 karma-coverage 中的默认示例,它表明只有 src
文件夹中的那些文件将被预处理。
另一个技巧是使用!
运算符来排除特定路径:
preprocessors:
// source files, that you wanna generate coverage for
// do not include tests or libraries
'src/**/!(*spec|*mock).js': ['coverage']
,
上面的一个使覆盖仅在那些不以spec.js
或mock.js
结尾的javascript 文件上运行。文件夹也可以这样做:
preprocessors:
// source files, that you wanna generate coverage for
// do not include tests or libraries
'src/**/!(spec|mock)/*.js': ['coverage']
,
不要处理 spec
或 mock
文件夹中的任何 Javascript 文件。
【讨论】:
提示:这将排除所有 spec 和 mock 文件夹,如果它们在 src/spec 和 src/mock 文件夹中,那么像这样使用:'src/!(spec|mock)/**/*.js': ['coverage']
可以添加多行吗? 'src/**/*.js': ['coverage'],
'src/!(vendor)/*.js,*.js': ['coverage']
。我正在寻找的是添加每个 .js 文件,但不包括属于供应商的 .js 文件
当然,您可以添加任意数量的行,只要每个键/路径不重复。
@MarcoL 我仍然在我的 lcov.info 中获取供应商文件我已经尝试了上述方法,以及 'src/**/!(vendor)/*.js,*.js': ['coverage']
【参考方案2】:
如果您使用的是karma-esm
或@open-wc/testing-karma
,后者使用karma-esm
,请将一个全局字符串数组传递给esm.coverageExclude
const createDefaultConfig = require('@open-wc/testing-karma');
const merge = require('deepmerge');
/**
* @param import('@types/karma').Config config
* @return import('@types/karma').Config
*/
module.exports = config =>
config.set(merge(createDefaultConfig(config),
files: [ pattern: config.grep ? config.grep : 'src/**/*.test.js', type: 'module' ],
esm:
nodeResolve: true,
babel: true,
coverageExclude: ['src/*.test.js'],
,
));
return config;
;
【讨论】:
以上是关于如何从业力代码覆盖率报告中排除文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 isparta 从业力的代码覆盖范围中排除第三方导入(如 jquery)?