Как настроить покрытие кода Karma runner?

Я пытаюсь заставить Karma runner генерировать отчеты о покрытии кода в формате cobertura во время сборки Jenkins. Я могу заставить его сгенерировать файл cover.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 генерируется нормально.)


person Noah Freitas    schedule 26.03.2013    source источник


Ответы (1)


Очевидно, что документация о покрытии кода кармы была более буквальной, чем я думал. Изменение моей конфигурации preprocessors на

preprocessors = {
  '**/tmp/scripts/**/*.js': 'coverage'
};

(обратите внимание на предыдущий **/) сделал свое дело. Я не уверен, почему синтаксис отличается для массива files и объекта preprocessors ('tmp/scripts/**/*.js' против '**/tmp/scripts/**/*.js').

person Noah Freitas    schedule 26.03.2013
comment
спасибо! Это смутило меня, так как я просто копировал и вставлял из массива файлов в karma.conf.js. - person grant; 26.05.2014
comment
Совет: препроцессор Karma использует мини-сопоставление для сопоставления выражений. Здесь есть онлайн-тестер для написания собственного шаблона: globtester.com - person AnthonyW; 18.06.2019