2013-03-26 4 views
20

Я пытаюсь получить 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 генерирует хорошо.)

ответ

25

Видимо karma code coverage documentation более буквальное, чем я думал. Изменение конфигурации моей preprocessors к

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

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

+0

спасибо! Это смутило меня, а я просто скопировал и вставил из массива файлов в karma.conf.js. – grant