|
單元測(cè)試的重要性已毋須多言,無(wú)論是從保證軟件開(kāi)發(fā)質(zhì)量,還是從節(jié)約軟件后期維護(hù)成本來(lái)說(shuō),單元測(cè)試都是最佳實(shí)踐。而在敏捷編程領(lǐng)域,隨著TDD(測(cè)試驅(qū)動(dòng)開(kāi)發(fā))被越來(lái)越多的開(kāi)發(fā)者所接受,單元測(cè)試已經(jīng)成為開(kāi)發(fā)過(guò)程中舉足輕重的一部分。
編寫(xiě)單元測(cè)試離不開(kāi)成熟的單元測(cè)試框架,由于JUnit框架的成功,Java開(kāi)發(fā)者對(duì)于單元測(cè)試的接受程度非常高。而Web2.0前端開(kāi)發(fā)的單元測(cè)試一直以來(lái)是一塊不太受重視的領(lǐng)域,導(dǎo)致這個(gè)狀況的有很多:前端開(kāi)發(fā)中邏輯和界面耦合度高、Javascript的模塊概念單薄、Javascript運(yùn)行環(huán)境(瀏覽器)不統(tǒng)一等;最主要的原因是缺乏成熟的單元測(cè)試框架,用來(lái)支持Web開(kāi)發(fā)的特性(Ajax,DOM等)以及Web前端的自動(dòng)化單元測(cè)試,然而Dojo中的DOH工具改變了這個(gè)現(xiàn)象。
DOH簡(jiǎn)介
Dojo作為一個(gè)成熟的Javascript開(kāi)發(fā)工具集,提供了強(qiáng)大的Javascript單元測(cè)試工具DOH(Dojo Objective Harness)。DOH主要是由Dojo的創(chuàng)始人Alex Russel主持開(kāi)發(fā),目的就是要針對(duì)Web前端開(kāi)發(fā)者提供一個(gè)有如下特點(diǎn)的測(cè)試框架:
- 提供用戶界面:JUnit中的紅條測(cè)試失敗、綠條測(cè)試通過(guò),大家都已經(jīng)很熟悉了,DOH也有類(lèi)似的用戶界面,用戶在測(cè)試時(shí)更加一目了然;
- 平臺(tái)無(wú)關(guān):DOH并不依賴(lài)某種瀏覽器平臺(tái),甚至不依賴(lài)于瀏覽器;用戶可以根據(jù)自己的需要在命令行進(jìn)行Javascript的自動(dòng)化單元測(cè)試;
- 支持Ajax:Ajax編程在Web前端開(kāi)發(fā)中是必不可少的一環(huán),DOH最有價(jià)值的一個(gè)特性就是支持Ajax的測(cè)試;
- 不只適合與于Dojo,可用于任何JavaScript程序的單元測(cè)試。
本文將以Dojo1.6.1版本為例,介紹如何使用DOH編寫(xiě)測(cè)試用例。
DOH初體驗(yàn)
Dojo的核心庫(kù)(dojo)、控件庫(kù)(dijit)以及一部分的擴(kuò)展庫(kù)(dojox)都自帶了比較完備的測(cè)試用例,所以在了解如何編寫(xiě)DOH測(cè)試用例之前,運(yùn)行一下Dojo1.6版本中已有的測(cè)試,可以對(duì)DOH有個(gè)大致的了解。
首先下載Dojo1.6.1,DOH測(cè)試框架就在dojo-release-1.6.1-src/util/doh文件夾下,其中runner.html頁(yè)面就是基于瀏覽器的DOH測(cè)試用戶界面。本文中的http服務(wù)器使用Apache2.2,有關(guān)Apache的配置可以參照這里,首先我們來(lái)運(yùn)行一下最常被使用的dojo.query的測(cè)試用例。dojo.query的測(cè)試模塊為test._base.query,在瀏覽器上運(yùn)行DOH測(cè)試用例非常簡(jiǎn)單,只要一個(gè)url即可:http://localhost/dojo161/util/doh/runner.html?testModule=tests._base.query ,dojo161是在Apache中設(shè)置的虛擬路徑,指向dojo-release-1.6.1-src目錄;下圖是test._base.query模塊的測(cè)試結(jié)果:
左邊的是測(cè)試用例列表,可以看到test._base.query測(cè)試模塊里含有兩組測(cè)試用例:test.base.query和test.base.NodeList,同事還顯示了該測(cè)試集消耗的時(shí)間,右邊是測(cè)試用例的日志。與JUnit相同,綠色表示通過(guò)測(cè)試,而紅色反之。
這里需要重點(diǎn)介紹的的是testModule參數(shù):DOH中的測(cè)試對(duì)象稱(chēng)為測(cè)試模塊,測(cè)試模塊中包含測(cè)試用例。DOH提供了兩種載入測(cè)試模塊的方式,一種是直接載入聲明了名稱(chēng)的測(cè)試模塊, 下面的代碼聲明了名為test._base.query的測(cè)試模塊,包含兩組用例:
dojo.provide("tests._base.query");if(dojo.isBrowser){
doh.registerUrl("tests._base.query", dojo.moduleUrl("tests", "_base/query.html"),
it知識(shí)庫(kù):Dojo單元測(cè)試框架DOH介紹,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。