|
单元测试的重要性已毋须多言,无论是从保证软件开发质量,还是从节约软件后期维护成本来说,单元测试都是最佳实践。而在敏捷编程领域,随着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介绍,转载需保留来源!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。