集成測(cè)試覆蓋率工具 codecov

@拭目以待集成測(cè)試覆蓋率工具 codecov

Codecov

某些開源項(xiàng)目上會(huì)有個(gè)coverage 圖標(biāo)福荸,這個(gè)圖標(biāo)所展示的就是當(dāng)前項(xiàng)目中測(cè)試代碼的覆蓋率瓤介。

自動(dòng)化測(cè)試在很多開發(fā)者認(rèn)知上是否定的毯欣,我以前也是這么認(rèn)為岩馍。 經(jīng)過對(duì) GridManager.js集成自動(dòng)化測(cè)試粱檀, 個(gè)人感觸如下:

  1. 代碼質(zhì)量提升明顯, 這是不用論證的迫像。

  2. 集成自動(dòng)化測(cè)試的過程中劈愚,可以發(fā)現(xiàn)很多隱性BUG和優(yōu)化點(diǎn)。

  3. 版本更新時(shí)闻妓,各功能塊之間的依賴所產(chǎn)生的錯(cuò)誤機(jī)率降低菌羽。

當(dāng)測(cè)試覆蓋率到了一定階段的時(shí)候,總是想看下當(dāng)前的覆蓋率是多少由缆。 這個(gè)時(shí)候就需要依賴一些工具注祖,我選擇使用的是codecov猾蒂。 選擇codecov的原因是,我在與@haoju.zheng合作開發(fā)的 jTool 中用的就是codecov, 所以本著好的不如熟的原則在 GridManager.js 中繼續(xù)使用是晨。

由于我當(dāng)時(shí)主要負(fù)責(zé)功能實(shí)現(xiàn)肚菠, @haoju.zheng 負(fù)責(zé)自動(dòng)化測(cè)試。所以在使用中還是存在了一些感觸罩缴,在此記錄下蚊逢。

安裝依賴包

npm install codecov --save-dev 
npm install karma-coverage --save-dev

在 package.json 中的 script 配置項(xiàng)中增加啟動(dòng)命令

"scripts": {
   "report-coverage": "codecov"
}

在.travis.yml 中的 script 配置項(xiàng)中增加啟動(dòng)命令

script:
  - npm test
  - npm run report-coverage

配置 karmar.conf.js

browserify karmar.conf.js 完整配置

module.exports = function(config) {
    config.set({
        frameworks: ['browserify', 'jasmine-ajax', 'jasmine'],
        files: [
            'src/**/*.js',
            'test/**/*_spec.js'
        ],
        preprocessors: {
            'test/**/*.js': ['jshint', 'browserify'],
            'src/**/*.js': ['jshint', 'browserify', 'coverage']
        },
        browsers: ['PhantomJS'],
        browserify: {
            debug: true,
            bundleDelay: 2000 // Fixes "reload" error messages, YMMV!
        },
        reporters: ['progress', 'coverage'],
        // optionally, configure the reporter
        coverageReporter: {
            reporters: [
                // generates ./coverage/lcov.info
                {type:'lcovonly', subdir: '.'},
                // generates ./coverage/coverage-final.json
                {type:'json', subdir: '.'},
            ]
        },
        singleRun: true,
        concurrency: Infinity
    });
};

上面的配置方式為 jTool 中使用到的方式, 然而在配置 GridManager.js 時(shí)卻出現(xiàn)異常箫章。 最終由@haoju.zheng提醒烙荷, 使用插件進(jìn)行解決。

安裝webpack測(cè)試覆蓋率工具 istanbul-instrumenter-loader

npm install istanbul-instrumenter-loader --save-dev

webpack karmar.conf.js 完整配置

var path = require('path');
module.exports = function (config) {
    config.set({
        basePath: '',
        frameworks: ['jasmine'],
        files: [
            'test/*_test.js'
        ],
        exclude: ['karma.conf.js'],
        port: 9876,
        colors: true,
        singleRun: true,
        logLevel: config.LOG_INFO,
        autoWatch: true,
        browsers: ['PhantomJS'],
        captureTimeout: 60000,
        reporters: ['progress', 'coverage'],
        preprocessors: {
            'test/*_test.js': ['webpack']
        },
        // optionally, configure the reporter
        coverageReporter: {
            reporters: [
                // generates ./coverage/lcov.info
                {type:'lcovonly', subdir: '.'},
                // generates ./coverage/coverage-final.json
                {type:'json', subdir: '.'}
            ]
        },
        webpack: {
            module: {
                loaders:[
                    {
                        test: /.js?$/,
                        loaders: ['babel?{"presets":["es2015"]}'],
                        exclude: /(node_modules|bower_components)/,
                        include: [path.join(__dirname, 'src'), path.join(__dirname, 'test')]
                    },
                    {
                        test:/.css$/,
                        loader:'style-loader!css-loader',
                        exclude: /(node_modules|bower_components)/,
                        include: [path.join(__dirname, 'src/css')]
                    },
                    {
                        test: /.(woff|woff2)(?v=d+.d+.d+)?$/,
                        loader: 'url?limit=15000&mimetype=application/font-woff&prefix=fonts',
                        exclude: /(node_modules|bower_components)/,
                        include: [path.join(__dirname, 'src')]
                    },
                    {
                        test: /.ttf(?v=d+.d+.d+)?$/,
                        loader: 'url?limit=15000&mimetype=application/octet-stream&prefix=fonts',
                        exclude: /(node_modules|bower_components)/,
                        include: [path.join(__dirname, 'src')]
                    },
                    {
                        test: /.eot(?#w+)?$/,
                        loader: 'url?limit=15000&mimetype=application/vnd.ms-fontobject&prefix=fonts',
                        exclude: /(node_modules|bower_components)/,
                        include: [path.join(__dirname, 'src')]
                    },
                    {
                        test: /.svg(#w+)?$/,
                        loader: 'url?limit=15000&mimetype=image/svg+xml&prefix=fonts',
                        exclude: /(node_modules|bower_components)/,
                        include: [path.join(__dirname, 'src')]
                    }
                ],
                postLoaders: [{
                    test: /.js$/,
                    loader: 'istanbul-instrumenter',
                    exclude: /node_modules|_spec.js$/,
                    include: [path.join(__dirname, './src')]
                }]
            }
 
        },
        concurrency: Infinity
    });
}

安裝依賴包

@拭目以待

個(gè)人站點(diǎn):www.lovejavascript.com
表格管理插件:gridmanager.lovejavascript.com && github地址
QQ交流群 (452781895):How To Make Love

《野生前端工程師》專輯中所有文章均為@拭目以待 原創(chuàng)檬寂,轉(zhuǎn)載請(qǐng)注明出處终抽。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市桶至,隨后出現(xiàn)的幾起案子昼伴,更是在濱河造成了極大的恐慌,老刑警劉巖镣屹,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亩码,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡野瘦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門飒泻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鞭光,“玉大人,你說我怎么就攤上這事泞遗《栊恚” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵史辙,是天一觀的道長(zhǎng)汹买。 經(jīng)常有香客問我,道長(zhǎng)聊倔,這世上最難降的妖魔是什么晦毙? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮耙蔑,結(jié)果婚禮上见妒,老公的妹妹穿的比我還像新娘。我一直安慰自己甸陌,他們只是感情好须揣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布盐股。 她就那樣靜靜地躺著,像睡著了一般耻卡。 火紅的嫁衣襯著肌膚如雪疯汁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天卵酪,我揣著相機(jī)與錄音幌蚊,去河邊找鬼。 笑死凛澎,一個(gè)胖子當(dāng)著我的面吹牛霹肝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播塑煎,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼沫换,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了最铁?” 一聲冷哼從身側(cè)響起讯赏,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎冷尉,沒想到半個(gè)月后漱挎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雀哨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年磕谅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雾棺。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡膊夹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捌浩,到底是詐尸還是另有隱情放刨,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布尸饺,位于F島的核電站进统,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏浪听。R本人自食惡果不足惜螟碎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望馋辈。 院中可真熱鬧抚芦,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至褥民,卻和暖如春季春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背消返。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工载弄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人撵颊。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓宇攻,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親倡勇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子逞刷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容