單元測(cè)試Unit Test

測(cè)試是什么

為檢測(cè)特定的目標(biāo)是否符合標(biāo)準(zhǔn)而采用專(zhuān)用的工具或者方法進(jìn)行驗(yàn)證,并最終得出特定的結(jié)果。
首先它是一個(gè)檢驗(yàn),所以應(yīng)該只有pass或fail兩種情況。而檢驗(yàn)的對(duì)象應(yīng)該是某個(gè)接口或模塊,所以應(yīng)該調(diào)用它獲得一個(gè)結(jié)果。檢驗(yàn)這個(gè)結(jié)果就是單元測(cè)試的基本動(dòng)作。

目的

避免需求和開(kāi)發(fā)脫節(jié),保證代碼質(zhì)量,可維護(hù),可擴(kuò)展性及方便問(wèn)題的排查和后期的修正。

單元測(cè)試方法論

在單元測(cè)試中,常用的方法論有兩個(gè):TDD(測(cè)試驅(qū)動(dòng)開(kāi)發(fā))&BDD(行為驅(qū)動(dòng)開(kāi)發(fā))TDD&BDD。

斷言庫(kù)

所謂"斷言",就是判斷源碼的實(shí)際執(zhí)行結(jié)果與預(yù)期結(jié)果是否一致,如果不一致就拋出一個(gè)錯(cuò)誤。所有的測(cè)試用例(it 塊)都應(yīng)該含有一句或多句的斷言。它是編寫(xiě)測(cè)試用例的關(guān)鍵。

  • better-assert TDD
  • should.JS BDD
  • expect.js BDD
  • chai.js 雙模 TDD BDD
  • jasmine.js BDD

自動(dòng)化單元測(cè)試

  • karma 自動(dòng)化rnner 集成PhantomJS無(wú)刷新 安裝

->~ npm i jasmine-core --save-dev
->~ npm i karma --save-dev
->~ npm i karma-coverage --save-dev
->~ npm i karma-jasmine --save-dev
->~ npm i karma-phantomjs-launcher --save-dev
->~ npm i karma-babel-preprocessor --save-dev
->~ npm i babel-preset-env --save-dev

karma.conf.js 修改

    preprocessors: {
      './**/*.js': ['coverage']
    },

    coverageReporter: {
      type: 'html',
      dir: 'coverage/'
    },

    reporters: ['progress', 'coverage'],

在項(xiàng)目下創(chuàng)建目錄tests并編寫(xiě)測(cè)試代碼

  • 編寫(xiě)代碼運(yùn)行
    tests/index.js
window.test = function (num) {
  return num + 1
}

tests/index.spec.js

describe('測(cè)試test 函數(shù)', function () {
  it('+1 測(cè)試', function () {
    expect(test(1)).toBe(2)
  })
})

運(yùn)行測(cè)試

 karma start

運(yùn)行 ok

image.png

運(yùn)行有錯(cuò)誤

修改index.spec.js

describe('測(cè)試test 函數(shù)', function () {
  it('+1 測(cè)試', function () {
    expect(test(1)).toBe(4)
  })
})

運(yùn)行測(cè)試

 karma start
image.png

覆蓋率 coverage

打開(kāi)coverage目錄index可查看,如圖:


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容