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