前身 Testacular
, AngularJs Team
建立出來的. 如下是官網對Karma
的相關特色介紹javascript
npm install -g karma or npm install -D karma
karma init or karma init karma.conf.js
-- autoWatch 自動監控更新
-- basePath 若是 basePath 爲相對路徑, 則加上 __dirname
做爲前綴, 配合files
-- browsers 運行瀏覽器 ['Chrome', 'Firefox']
-- captureTimeout 若是瀏覽器在指定時間內監控失敗,karma將會刪殺死進程並重啓, 若是重試3次都失敗,則放棄啓動
-- colors 輸出是否輸出顏色
-- exclude 忽略加載的文件列表
-- files 瀏覽器訪問的文件列表
-- hostname 主機名
-- logLevel 日誌等級 LOG_DISABLE
, LOG_ERROR
, LOG_WARN
, LOG_INFO
, LOG_DEBUG
-- loggers 日誌輸出
-- port 端口號
-- preprocessors 預處理
-- proxies 代理配置
-- reportSlowerThan 運行慢時間標準, 0
表示不開啓
-- reporters
-- runnerPort karma run
端口
-- singleRun 是否逐個運行瀏覽器
-- urlRoot
-- jsVersion firexfox
瀏覽器支持html
{ files: [ {pattern: 'test/unit/*.js', watched: true, include: true, served: true}, {pattern: 'src/**/*.js', included: false}, 'test/test-main.js' ] }
-- pattern 匹配的模式, 使用 minimatch
庫匹配
-- watched 是否監控文件變化
-- included 是否直接script引入
-- served 文件是否部署在 karma 的 web服務上
-- nocache 默認爲 false
,表示開啓緩存java
karma start
若是使用 karma start 啓動了服務, 但沒經過監聽文件變化自動運行測試腳本, 能夠手動執行karma run
測試.webpack
{ browsers: ['Chrome', 'Firefox'] }
注意: 大多數瀏覽器啓動須要安裝插件es6
# Install the launcher first with NPM: $ npm install karma-xxx-launcher --save-dev
{ plugins: [ 'karma-chrome-launcher', 'karma-firefox-launcher' ] }
# Changing the path to the Chrome binary $ export CHROME_BIN=/usr/local/bin/my-chrome-build # Changing the path to the Chrome Canary binary $ export CHROME_CANARY_BIN=/usr/local/bin/my-chrome-build # Changing the path to the PhantomJs binary $ export PHANTOMJS_BIN=$HOME/local/bin/phantomjs
激活代碼覆蓋率報告web
{ reporters: ['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'] }, coverageReporter: { type: 'html', dir: 'coverage/' } }
typechrome
html
lcov (lcov + html)
lcovonly
text
text-summary
cobertura
dir
輸出文件夾位置npm
file type
爲 text
或者 text-summary
時, file
有效, 生成指定文件瀏覽器
es6
, ts
編寫js, 經過 babel
或 ts解釋器
進行轉換.karma-coverage
, karma-webpack
{ files: [ './index.js' ], preprocessors: { './index.js': ['webpack', 'sourcemap'] }, webpack: webpackConfig, // webpack 配置 webpackMiddleware: { noInfo: true }, plugins: [ 'karma-jasmine', 'karma-mocha-reporter', 'karma-sourcemap-loader', 'karma-webpack' // 前提要求 webpack已經包含 ] }