karma 的插件 karma-coverage 提供了測試代碼覆蓋率的支持。
karma 的頁面:http://karma-runner.github.io/0.8/config/coverage.html 進行了說明。karma 使用 Istanbul.實現覆蓋率統計。
首先你需要安裝這個 Karma 插件,然后需要在配置文件的三個地方進行配置。
安裝 karma-coverage
當然了,你必須安裝這個組件才能完成覆蓋率統計。可以看到,在安裝這個插件的時候,已經安裝了 Istanbul 。
npm i -D karma-coverage ├─┬ karma@0.13.21 │ ├─┬ log4js@0.6.31 │ │ └── semver@4.3.6 │ └─┬ optimist@0.6.1 │ ├── minimist@0.0.10 │ └── wordwrap@0.0.3 └─┬ karma-coverage@0.5.3 ├─┬ dateformat@1.0.12 │ └─┬ meow@3.7.0 │ ├── minimist@1.2.0 │ └─┬ normalize-package-data@2.3.5 │ └── semver@5.1.0 └─┬ istanbul@0.4.2 ├─┬ escodegen@1.7.1 │ └─┬ optionator@0.5.0 │ └── wordwrap@0.0.3 └── wordwrap@1.0.0
配置
涉及三個配置信息,兩個是必須的,一個是可選的。
配置預處理器
這里配置哪些文件需要統計測試覆蓋率,例如,如果你的所有代碼文件都在 lib 文件夾中,你就需要如下配置。
preprocessors = { '**/lib/*.js': 'coverage' };
注意不要包含你所依賴的庫,測試文件等等,下面就是一個錯誤的配置信息。
files = [ JASMINE, JASMINE_ADAPTER, 'lib/*.js', 'test/*.js' ]; preprocessors = { '**/*.js': 'coverage' };
配置報告
在配置文件中包含下面的信息來激活覆蓋率報告器。
reporters = ['coverage'];
這樣將會對每個瀏覽器創建一個覆蓋率報告,另外,它還會創建一個 Json 文件,其中包含輸出的中間數據。
配置報告選項
默認的報告格式如下:
coverageReporter = { type : 'html', dir : 'coverage/' }
type 是一個字符串值,取值可以是:
html(default)lcov(lcov and html)lcovonlytexttext-summarycobertura(xml format supported by Jenkins)
dir 則用來配置報告的輸出目錄。如果是一個相對路徑的話,將相對與 basePath 參數。
如果類型是 text 或者 text-summary,你可以配置 file 參數來指定保存的文件名。
coverageReporter = { type : 'text', dir : 'coverage/', file : 'coverage.txt' }
如果沒有文件名,就會輸出到控制台。
