Как настроить покрытие кода бегущей кармы?
Я пытаюсь заставить бегуна Karma генерировать отчеты о покрытии кода в формате cobertura во время сборки Jenkins. Я могу заставить его создать файл coverage.xml, но на самом деле он не имеет каких-либо данных покрытия. Появляется (используя LOG_DEBUG
), что препроцессор покрытия не работает.
Соответствующие фрагменты из моего файла karma.conf.js
:
files = [
JASMINE,
JASMINE_ADAPTER,
'app/components/angular/angular.js',
'app/components/angular-mocks/angular-mocks.js',
'tmp/scripts/**/*.js',
'tmp/spec/**/*.js'
];
preprocessors = {
'tmp/scripts/**/*.js': 'coverage'
};
// test results reporter to use
// possible values: 'dots', 'progress', 'junit'
reporters = ['dots', 'junit', 'coverage'];
junitReporter = {
outputFile: 'test-results.xml'
};
coverageReporter = {
type: 'cobertura',
dir: 'coverage/',
file: 'coverage.xml'
};
(Отчет junit генерирует штраф.)
Ответы
Ответ 1
По-видимому, информация о покрытии кода кармы была более буквальной, чем я думал. Изменение конфигурации preprocessors
на
preprocessors = {
'**/tmp/scripts/**/*.js': 'coverage'
};
(обратите внимание на предыдущий **/
) сделал трюк. Я не уверен, почему синтаксис отличается для массива files
и объекта preprocessors
('tmp/scripts/**/*.js'
vs. '**/tmp/scripts/**/*.js'
).