清单 15 显示了如何使用几个参数配置控制台。该控制台会在 DOM 元素内部呈现,其 id 为 testLogger。
需要更新 HTML 运行程序。添加该控制台所引用的 DOM 元素,如清单 16 所示。
清单 16. 更新后的 HTML 运行程序支持 Yahoo!Console
<body class="yui3-skin-sam"> <div id="testLogger"></div> </body> |
本例为 设置了一个类,名为 yui3-skin-sam。该类负责定义控制台的皮肤。
图 3 显示了运行测试之后的控制台。
图 3. YUI Test 结果
回页首
使用 JSTestDriver 轻松测试
通过使用功能强大的 JSTestDriver (JSTD) 工具,您能够在多个浏览器中从命令行运行 JavaScript。JSTD 带有一个 JAR 文件,它可以让您启动服务器、捕获一或多个浏览器并在这些浏览器中运行测试。因为拥有上述的两个框架,您不需要 HTML 运行程序,但您需要一个配置文件。图 17 显示了配置文件。
清单 17. 配置文件 (jsTestDriver.conf)
server: http://localhost:4224 load: - js/src/*.js test: - js/test/*.js |
该配置文件是用 YAML 编写的,这是一种很好的配置文件格式。它包含了要启动的服务器以及源代码和测试文件的位置信息。
要使用 JSTD 来执行测试:
启动测试服务器。从命令行中,进入到保存 jsTestDriver.jar 的文件夹,并执行以下命令:
java -jar JsTestDriver-1.3.3d.jar -port 4224 |
清单 17 中指定的端口应该与配置文件中指定的一样。在默认情况下,JSTD 会在 JAR 文件所在的同一个目录下查找 jsTestDriver.conf 文件。
在测试中,通过将 URL http://localhost:4224/capture 复制粘贴到测试中的浏览器,在服务器上注册一个或多个浏览器。
测试之前示例中所使用的相同代码(清单 5),但这次使用 JSTD 语法。清单 18 显示了如何转换 清单 10 的 QUnit 和 清单14 的 YUI Test 中的代码。
清单 18. JSTD 测试
TestCase("Temperature conversion", { setUp : function () { this.celsius1 = 20; this.celsius2 = 30; this.fahrenheit1 = 68; this.fahrenheit2 = 86; }, testConversionCtoF: function () { assertSame(this.fahrenheit1, convertFromCelsiusToFahrenheit(this.celsius1)); assertSame(this.fahrenheit2, convertFromCelsiusToFahrenheit(this.celsius2)); }, testConversionFtoC: function () { assertSame(this.celsius1, convertFromFahrenheitToCelsius(this.fahrenheit1)); assertSame(this.celsius2, convertFromFahrenheitToCelsius(this.fahrenheit2)); } }); |
清单 18 中的代码与 YUI 版本差别不大。JSTD 使用 TestCase() 函数来定义测试用例。您可以使用内联声明来定义测试方法,如清单 18 所示,或者可以扩展 TestCase 实例的原型。每个测试用例还可以使用 SetUp() 和 tearDown() 方法。
如果要运行测试,运行以下命令:
java -jar JsTestDriver-1.3.3d.jar --tests all |
图 4 显示了终端上的输出结果。
图 4. JSTD 测试的结果
测试会传入之前捕获到的所有浏览器(Chrome 15、Safari 5 和 Firefox 7)。
JSTD 还能与您偏好的连续集成系统很好地集成,成为连续版本的一部分。它还能与 IDE 集成,如 Eclipse(插件)或 TextMate(包)。
回页首
结束语
随着现在对 Web 应用程序客户端的关注,对 JavaScript 进行单元测试就显得尤为必要。有很多框架可以帮助您完成此任务,本文介绍了三个最流行的框架:QUnit、YUI Test 和 JSTestDriver。
QUnit 非常简单,很适合初学者的框架。
YUI Test 是个全面的工具,适合熟悉 YUI 库的用户。
JSTestDriver 可在多个浏览器中运行测试。