首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Dojo 敏捷开发:集成 DOH 单元测试到 Ant build (1)

Dojo 敏捷开发:集成 DOH 单元测试到 Ant build (1)

前言熟悉敏捷开发的读者都知道,在项目开发过程中创建一个定期运行的 build 是至关重要的,它可以帮助项目团队及时的发现项目中存在的问题以及查看迭代的结果。通常 build 中都会包含一项很重要的工作就是执行项目中的单元测试并汇报单元测试的执行结果,如果有单元测试失败那么就让 build 失败。对于使用 Dojo 开发的项目而言,如何将 Dojo 代码的单元测试集成到项目的 build 中是贯彻敏捷开发原则必不可少的一步。
本文将首先简单对 Dojo 单元测试框架 DOH 进行简单介绍,然后说明如何将编写的单元测试集成到 Ant build 中。
DOH 单元测试简介DOH (Dojo Objective Harness) 是 Dojo 提供的 JavaScript 测试套件,也是当前最有效的 Dojo 代码单元测试框架。它不仅可以用于测试 Dojo 代码,也可以独立于 Dojo ,用于测试其它 JavaScript 代码。
在一个用 Dojo 开发的应用中,按照代码的功能通常可将测试点分为如下几种类型:JavaScript 代码逻辑、Ajax 异步通信、widget 的显示及行为、UI Look & Feel。
  • JavaScript 代码逻辑,是指一个功能逻辑相对独立的 JavaScript 代码段,通常是一个 JavaScript function 或者一个 Dojo class 的 method。它可以在一个相对封闭的数据集中进行执行,执行的结果是返回一个独立的数据集或者改变封闭数据集中的数据。对于这种代码的单元测试是非常容易编写和执行的,而且执行时也不会产生任何的副作用。我们只需要构造一个数据集,然后在这个数据集上调用该 JavaScript 代码段,最后检验执行结果是否与预期相符即可。这种单元测试不需要与服务器通信也不需要后端代码的支持,而且大多不会存在浏览器的兼容性问题。
  • Ajax 异步通信:在使用 Ajax Framework 进行开发的应用系统中,异步请求服务器数据是非常常见的操作,测试 Ajax 很关键的是等待服务器返回结果然后对结果进行判断,DOH 提供了 DOH.Deffered 对象,利用它可以很方便的进行 Ajax 测试。当然这类测试需要服务器端进行支持,也可以在客户端用数据文件模拟服务器端返回的数据进行测试。
  • Widget 的显示及行为:Dojo 的 dijit 库提供了强大的 Widget 支持,同时也提供了开发自定义 Widget 的能力。在应用系统中,所有用户可见部分的显示和行为都是通过 Widget 来实现的。对于 Widget 的测试就包括对其在浏览器中所展现的样式以及与用户交互过程中所展现的行为的测试。由于这些与浏览器的实现关系非常密切,所以对 Widget 的测试需要针对不同浏览器测试其兼容性问题。
  • UI Look & Feel:Look & Feel 对于 UI 系统也是非常重要的一个方面。在 Dojo 应用系统中,这里主要是对自开发的 CSS 样式表的验证,检查页面在不同的浏览器中所展现出来的样式是否符合要求。但是,据笔者了解,现有的技术方案都不会对这类问题进行单元测试,而是将这类问题放到功能测试中进行覆盖。
DOH 作为一种 JavaScript 单元测试框架,它对以上所描述的几种类型都有很好的支持。它针对不同类型的单元测试提供了不同的测试模式。
DOH 单元测试运行方式编写好的 DOH 单元测试需要怎么运行呢? DOH 支持两种运行方式:浏览器运行方式和命令行运行方式。
浏览器运行方式Dojo 提供了统一界面来运行单元测试,那就是 DOH 中的 runner.html,它把大量单独的单元测试文件(JavaScript 和 HTML 文件)封装到一个文件中统一管理。浏览器运行方式就是指使用浏览器访问该文件来执行单元测试,并以直观的方式反映运行结果。开发人员可将自己开发的单元测试样例加到 runner.html 中进行测试,运行时可以在浏览器的页面上看到执行进度、打印的 log 信息、UI 显示界面,以及运行结果等等。
优点 :可以很直观的查看运行的过程和结果,对 UI 页面和 Widget 测试天然地提供了执行环境的支持。擅长 UI 页面及 Widget 的显示和行为的测试,以及 Ajax 异步通信测试。
不足: 测试过程中需要启动浏览器,UI 的可视化测试需要人为判断是否符合需求,很难自动化。
命令行运行方式DOH 还提供了一种不依赖于浏览器来运行单元测试的方法,那就是利用命令行的方式。它是通过使用 Dojo util 下面的 JavaScript 执行引擎 – Rhino 来执行单元测试的。运行方式是在 dojo/util/doh 目录下运行命令:
1
java -jar ../shrinksafe/js.jar runner.js testModule= ${yourmodule}




其中 runner.js 是 DOH 提供的一个执行单元测试的 JavaScript 入口点,${yourmodule} 是自定义的测试模块名称。
优点:执行过程不需要人为参与,执行结果也可以通过 DOH 的 assert 自动判断,擅长 JavaScript 逻辑测试,单元测试很容易编写。
不足:没有浏览器的环境,无法对可视化页面或 Widget 的显示效果进行测试,所使用的 Rhino JavaScript 引擎可能与实际使用的浏览器中的 JavaScript 引擎有所差异,这可能会导致一些特定代码的测试结果与实际运行结果不同,无法进行浏览器的兼容性测试。
返回列表