Javascript CI篇(2)- Karma 基礎學習

Karma 簡介

Karma是Testacular的新名字,在2012年google開源了Testacular,2013年Testacular更名爲Karma。Karma是一個讓人感到很是神祕的名字,表示佛教中的緣分,因果報應,比Cassandra這種名字更讓人猜不透!node

Karma是一個基於Node.js的JavaScript測試執行過程管理工具(Test Runner)。該工具可用於測試全部主流Web瀏覽器,也可集成到CI(Continuous integration)工具,也可和其餘代碼編輯器一塊兒使用。這個測試工具的一個強大特性就是,它能夠監控(Watch)文件的變化,而後自行執行,經過console.log顯示測試結果。web

Karma 和 mocha,Qunit,jasmine區別

But I still want to use _insert testing library_

Karma is not a testing framework, nor an assertion library. Karma just launches an HTTP server, and generates the test runner HTML file you probably already know from your favourite testing framework. So for testing purposes you can use pretty much anything you like. There are already plugins for most of the common testing frameworks:

Jasmine
Mocha
QUnit
and many others
If you can't find an adapter for your favourite framework, don't worry and write your own. It's not that hard and we are here to help.

引用官方的說明,karma不是一個測試框架,沒有斷言庫。Karma只是運行了一個HTTP服務並生成一個測試入口HTML文件Test Runner。因此使用Karma須要本身選擇測試框架,主流的測試框架有:chrome

  • Jasminenpm

  • Mocha瀏覽器

  • QUnit服務器

Karma 默認的是使用jasmine框架

當你項目有如下需求的時候,能夠考慮使用Karma

  • 你想在真實的瀏覽器中測試代碼編輯器

  • 你想測試代碼在多平臺,多個瀏覽器(桌面,移動設備,平臺)工具

  • 你想在本地開發期間執行測試測試

  • 你想在持續集成服務器執行測試

  • 你想執行測試在每次保存

  • You love your terminal.

  • You don't want your (testing) life to suck.

  • 你想使用Instanbul去自動化生成覆蓋率報告

  • You want to use RequireJS for your source files.

正式開始使用


安裝

# Install Karma:
$ npm install karma --save-dev

# Install plugins that your project needs:
$ npm install karma-jasmine karma-chrome-launcher jasmine-core --save-dev

初始化配置文件

karma init my.conf.js

這裏一路按enter就能夠了,咱們使用默認的測試框架jasmine

啓動

karma start my.conf.js

個人項目中會報找不到Error: Cannot find module 'jasmine-core'錯誤,開始採用的是 npm install --save-dev的模式有這個問題,分析了源碼以爲是他們代碼或者是node 環境下CMD的問題,我運行的Node版本是6.9.1。後來經過npm install -g 的方式暫時修復了

karma.conf.js

config.set({

    // base path that will be used to resolve all patterns (eg. files, exclude)
    basePath: '',
    
    // 測試框架
    frameworks: ['jasmine'],


    // 要監聽的文件列表,支持通配符模式
    files: [**/*.test.js],

    // 要排除的文件列表,支持通配符
    exclude: [**/*.js],

    // 在文件提交給瀏覽器作預處理
    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
    preprocessors: {
    },


    // test results reporter to use
    // possible values: 'dots', 'progress'
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
    reporters: ['progress'],


    // web server port
    port: 9876,


    // enable / disable colors in the output (reporters and logs)
    colors: true,


    // level of logging
    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
    logLevel: config.LOG_INFO,


    // enable / disable watching file and executing tests whenever any file changes
    autoWatch: true,


    // start these browsers
    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
    browsers: ['Chrome'],


    // Continuous Integration mode
    // if true, Karma captures browsers, runs the tests and exits
    singleRun: false,

    // Concurrency level
    // how many browser should be started simultaneous
    concurrency: Infinity
  })
}

總結

是否是以爲Karma挺簡單的?確實是挺簡單的,這就是Test-Runner而不是Test Framework。Karma核心功能就是啓動一個服務並監聽項目文件改變,文件改變後再刷新服務器。

相關文章
相關標籤/搜索