QUnit是jQuery支援的一款JavaScript單頁測試架構。簡單易用。可以從QUnit的Github頁面擷取其代碼。QUnit的使用與JUnit類似,相信有JUnit經驗的開發者和測試人員可以很快上手。
開始寫測試用例
-
test( name, expected, test )
一個正常的測試用例。test裡是測試用例的具體内容。
-
asyncTest( name, expected, test )
一個異步測試用例。預設的test都是同步的。内容中必須顯示地調用start(),測試才會開始。
-
expect( amount )
用于測試代碼中,表示在本測試裡期待會執行amount個斷言,大于或少于這個數量,測試都将失敗。
-
module( name, lifecycle )
定義一個名為name的子產品。在可選參數lifecycle中,可以定義子產品開始和結束的測試内容。具體見文檔。
-
QUnit.init( )
啟動QUnit測試。如果測試在進行中,則會重新啟動。基本不用。
QUnit支援的斷言
-
ok( state, message )
真假斷言,state為true則通過。類似于JUnit的assertTrue。
-
equal( actual, expected, message )
相等斷言,actual和expected相等(==)則通過。類似于JUnit的assertEquals。
-
notEqual( actual, expected, message )
不等斷言,actual和expected不相等(!=)則通過。類似于JUnit的assertNotEquals。
-
deepEqual( actual, expected, message )
遞歸相等斷言,actual和expected全相等(包括其子元素都相等,适用于基本類型,數組和對象)則通過。對于基本類型,相當于strictEqual。
-
notDeepEqual( actual, expected, message )
遞歸不相等斷言,actual和expected不全相等(包括其子元素都相等,适用于基本類型,數組和對象)則通過。對于基本類型,相當于notStrictEqual。
-
strictEqual( actual, expected, message )
全相等斷言,actual和expected全相等(===)則通過。
-
notStrictEqual( actual, expected, message )
不全相等斷言,actual和expected不全相等(===)則通過。
-
raises( block, expected, message )
異常斷言,block中抛出異常則通過,expected為可選參數,是所期待抛出異常名的正規表達式。
把QUnit內建到現有工具
QUnit在執行的過程中會調用一系列函數,告知外界運作狀況,大家可以覆寫這些函數,達到內建的目的。
-
QUnit.log({ result, actual, expected, message })
每當斷言執行結束後會調用此函數。
-
QUnit.testStart({ name })
每當一個測試執行開始時會調用此函數。
-
QUnit.testDone({ name, failed, passed, total })
每當一個測試執行結束後會調用此函數。
-
QUnit.moduleStart({ name })
每當一個子產品執行開始時會調用此函數。
-
QUnit.moduleDone({ name, failed, passed, total })
每當一個子產品執行結束後會調用此函數。
-
QUnit.begin()
當QUnit開始時會調用此函數。
-
QUnit.done()
當QUnit結束後會調用此函數。
在後面的執行個體中,我寫了一些覆寫,列印了執行過程。相信有了這些回調函數的幫助,寫一個進度條出來也不是難事。
QUnit的過濾器
-
noglobals
如果勾選,那麼如果一個測試中引入了全局變量,則測試會失敗。JavaScript中引入全局變量(window的屬性)是不推薦的行為。
-
notrycatch
如果勾選,代碼中的try-catch将不會生效,一旦程式中有異常發生,測試即刻終止。